Странные падения при переходе c Qt 4.4.0 на Qt 4.8.1

Рейтинг: 0Ответов: 0Опубликовано: 11.12.2014

Проблема в следующем.

Есть программа, написанная с Qt 4.4.0. Работала долго, без проблем.

Пересобрал ее с Qt 4.8.1. ОС Ubuntu 12.04.
Cобралось нормально.
Но теперь случаются странные падения.

Пример:

void XEventButton::buttonPressed() 
{ 
    XEventButtonProperty* property = static_cast<XEventButtonProperty*> propertyItem->getProperty());

    dlg->setupForExec( propertyItem->getValue(), property->getMode() ); 
    dlg->exec(); 
    propertyItem->setValue( dlg->getValue() ); 
}

Падение происходит в функции dlg->getValue(). Указатель dlg вдруг стал равен 0.

Если ставлю брекпоинт в этом месте, то dlg уже ненулевой, тогда падает в этой же строке, но потому что propertyItem = 0x20 (propertyItem - указатель).

Изменил код на это:

void XEventButton::buttonPressed() 
{ 
    XEventButtonProperty* property = static_cast<XEventButtonProperty*>(propertyItem->getProperty());

    XEventButtonPropertyItem* tmp_prop_item = propertyItem;
    XEventDialog* tmp_dlg2 = dlg;
    dlg->setupForExec( propertyItem->getValue(), property->getMode() );     
    dlg->exec();
    propertyItem = tmp_prop_item;
    dlg = tmp_dlg2;
    propertyItem->setValue( dlg->getValue() );
}

и все. Падения прекратились. Что за дела? Я не понимаю, что происходит.

Есть еще несколько непонятных вещей, но что-то мне подсказывает, корень проблем один.

Ответы

Ответов пока нет.