Commit a8ba7054 authored by Friedemann Kleint's avatar Friedemann Kleint Committed by hjk
Browse files

Catch std::bad_alloc thrown by ElfReader on MinGW.



Change-Id: Ide5445e1cf488c29be620287759147251bc7c26a
Reviewed-by: default avatarhjk <qthjk@ovi.com>
parent 81b431cd
......@@ -228,19 +228,24 @@ void ModulesModel::removeModule(const QString &modulePath)
void ModulesModel::updateModule(const Module &module)
{
const int row = indexOfModule(module.modulePath);
ElfReader reader(module.modulePath);
ElfData elfData = reader.readHeaders();
try { // MinGW occasionallly throws std::bad_alloc.
ElfReader reader(module.modulePath);
ElfData elfData = reader.readHeaders();
if (row == -1) {
const int n = m_modules.size();
beginInsertRows(QModelIndex(), n, n);
m_modules.push_back(module);
m_modules.back().elfData = elfData;
endInsertRows();
} else {
m_modules[row] = module;
m_modules[row].elfData = elfData;
dataChanged(index(row, 0, QModelIndex()), index(row, 4, QModelIndex()));
if (row == -1) {
const int n = m_modules.size();
beginInsertRows(QModelIndex(), n, n);
m_modules.push_back(module);
m_modules.back().elfData = elfData;
endInsertRows();
} else {
m_modules[row] = module;
m_modules[row].elfData = elfData;
dataChanged(index(row, 0, QModelIndex()), index(row, 4, QModelIndex()));
}
} catch(...) {
qWarning("%s: An exception occurred while reading module '%s'",
Q_FUNC_INFO, qPrintable(module.modulePath));
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment