QAction::text(), программа получила сигнал SIGSEGV, ошибка сегментации

Я работал над миграцией продукта с QT4 на 5.

Я получаю эту ошибку, возвращаясь к ней-

#0  0x00007ffff5488cd1 in QAction::text() const () from /fa/sw/registry/22851-export_qt5-04-soni-01/serverdist/dist/x86_linux/lib64/libQt5Widgets.so.5
#1  0x0000000000c17435 in cQ_ELEMENTS_COMBOBOX::AppendItem(QString const&) ()
#2  0x00000000005441e6 in cEXPORT_FILE_PARMS::initialize(QWidget*, cQ_GRID_LAYOUT*, int, bool, char const*) ()
#3  0x0000000000545ad3 in cEXPORT_FILE_PARMS::cEXPORT_FILE_PARMS(QWidget*, cGV_DEC_PROJECT*, ExportOutputFileParameterSet*, cQ_GRID_LAYOUT*, int, QString) ()

asINT32 cQ_ELEMENTS_COMBOBOX::AppendItem(const QString &item_name)
{
  //if item already exists then do not append item
  if(GetAction(m_popup_p, item_name) == NULL) {
    m_popup_p->addAction(item_name);
    return 0;
  }
  return -1;
}

QAction* GetAction(QMenu* menu, const QString& actionName){
  QList<QAction*>::iterator menuItr = menu->actions().begin();
  /*const*/ QList<QAction*>::iterator menuEnd = menu->actions().end();
  while (menuItr != menuEnd)
  {
   if((*menuItr)->text() == actionName){
                return *menuItr;
   }

   menuItr++;
  }
  return NULL;
}

После выдачи выписок в этой строке программа вылетает -

if((*menuItr)->text() == actionName)

иногда это работает, а иногда падает, не в состоянии увидеть определенный шаблон. Есть ли обходной путь или какой-либо способ заранее обнаружить ошибку сегментации.

0 ответов

Другие вопросы по тегам