diff --git a/src/plugins/debugger/moduleshandler.cpp b/src/plugins/debugger/moduleshandler.cpp index c32e1680fb7..7c9dcc06cbd 100644 --- a/src/plugins/debugger/moduleshandler.cpp +++ b/src/plugins/debugger/moduleshandler.cpp @@ -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)); } }