diff --git a/VERSION.cmake b/VERSION.cmake index 117a1415..9d8ecb53 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -1,7 +1,8 @@ SET(VERSION_MAJOR "2") SET(VERSION_MINOR "46") SET(VERSION_PATCH "24") -SET( VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}${GIT_SHA1_VERSION}" ) +SET(VERSION_TWEAK "1") +SET( VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_TWEAK}${GIT_SHA1_VERSION}" ) ##### This is need for the libyui core, ONLY. ##### These will be overridden from exports in LibyuiConfig.cmake diff --git a/package/libyui-qt-doc.spec b/package/libyui-qt-doc.spec index bfc6c11f..5b1f7ae6 100644 --- a/package/libyui-qt-doc.spec +++ b/package/libyui-qt-doc.spec @@ -20,7 +20,7 @@ %define so_version 7 Name: %{parent}-doc -Version: 2.46.24 +Version: 2.46.24.1 Release: 0 Source: %{parent}-%{version}.tar.bz2 diff --git a/package/libyui-qt.changes b/package/libyui-qt.changes index ffb70114..621e2491 100644 --- a/package/libyui-qt.changes +++ b/package/libyui-qt.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Thu Feb 1 12:49:24 UTC 2018 - shundhammer@suse.com + +- Prevent segfault if an open dialog is left over: + Don't do anything widget related after the QApplication is + destroyed, in particular not deleting other widgets, even if + indirectly via YDialog::deleteAllDialogs() in YUI. + (bsc#1074596, bsc#1077991) +- 2.46.24.1 + ------------------------------------------------------------------- Mon Aug 22 12:47:32 UTC 2016 - jreidinger@suse.com diff --git a/package/libyui-qt.spec b/package/libyui-qt.spec index 7093a665..d8792b43 100644 --- a/package/libyui-qt.spec +++ b/package/libyui-qt.spec @@ -17,7 +17,7 @@ Name: libyui-qt -Version: 2.46.24 +Version: 2.46.24.1 Release: 0 Source: %{name}-%{version}.tar.bz2 diff --git a/src/YQUI.cc b/src/YQUI.cc index a34ff465..d20ffa97 100644 --- a/src/YQUI.cc +++ b/src/YQUI.cc @@ -339,7 +339,7 @@ void YQUI::processCommandLineArgs( int argc, char **argv ) YQUI::~YQUI() { - yuiDebug() <<"Closing down Qt UI." << std::endl; + yuiMilestone() <<"Closing down Qt UI." << std::endl; // Intentionally NOT calling dlclose() to libqt-mt // (see constructor for explanation) @@ -356,10 +356,20 @@ YQUI::~YQUI() void YQUI::uiThreadDestructor() { + yuiMilestone() <<"Destroying UI thread" << std::endl; + if ( qApp ) // might already be reset to 0 internally from Qt { - qApp->exit(); - delete qApp; + if ( YDialog::openDialogsCount() > 0 ) + { + yuiError() << YDialog::openDialogsCount() << " open dialogs left over" << endl; + yuiError() << "Topmost dialog:" << endl; + YDialog::topmostDialog()->dumpWidgetTree(); + } + + YDialog::deleteAllDialogs(); + qApp->exit(); + qApp->deleteLater(); } }