diff options
author | mread <qt-info@nokia.com> | 2011-10-18 12:51:56 (GMT) |
---|---|---|
committer | mread <qt-info@nokia.com> | 2011-10-18 13:13:14 (GMT) |
commit | c838a413ee15b5ee872769f914f76ed3925b2201 (patch) | |
tree | c9cc3a0e4d92ac386707a38d8c0810ce997ae21b | |
parent | b7179d6f284e277b84c54226be05832a25576387 (diff) | |
download | Qt-c838a413ee15b5ee872769f914f76ed3925b2201.zip Qt-c838a413ee15b5ee872769f914f76ed3925b2201.tar.gz Qt-c838a413ee15b5ee872769f914f76ed3925b2201.tar.bz2 |
Catch potential throw in ~QSymbianControl
The call to topData() in ~QSymbianControl can create the required
object if it does not already exist. This can then throw an exception
if it fails, which is not allowed to escape the destructor. So it is
caught and ignored.
Task-number: QTBUG-4871 incidental finding
Reviewed-by: Shane Kearns
-rw-r--r-- | src/gui/kernel/qapplication_s60.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index 7d198ce..f1221eb 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -584,7 +584,11 @@ QSymbianControl::~QSymbianControl() { // Ensure backing store is deleted before the top-level // window is destroyed - qt_widget_private(qwidget)->topData()->backingStore.destroy(); + QT_TRY { + qt_widget_private(qwidget)->topData()->backingStore.destroy(); + } QT_CATCH(const std::exception&) { + // ignore exceptions, nothing can be done + } if (S60->curWin == this) S60->curWin = 0; |