diff options
| author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2013-04-22 21:25:32 -0500 |
|---|---|---|
| committer | Slávek Banko <slavek.banko@axis.cz> | 2013-04-25 03:21:44 +0200 |
| commit | b8e4f241c05530146a21c03d9b936fe288b5d9b2 (patch) | |
| tree | 2a220da0599e46bcdc3c5fdcf18a0568d91b7b67 /src/kernel/qobject.cpp | |
| parent | 60621ef099afb930228089c12c98565d22c1c831 (diff) | |
| download | qt3-b8e4f241c05530146a21c03d9b936fe288b5d9b2.tar.gz qt3-b8e4f241c05530146a21c03d9b936fe288b5d9b2.zip | |
Fix a number of threading problems and crashes
This partially resolves Bug 1467
(part of the original commit)
(cherry picked from commit 83d39cad274f592a43a3262926d215493caea0bc)
Diffstat (limited to 'src/kernel/qobject.cpp')
| -rw-r--r-- | src/kernel/qobject.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/kernel/qobject.cpp b/src/kernel/qobject.cpp index 7790676..375e83b 100644 --- a/src/kernel/qobject.cpp +++ b/src/kernel/qobject.cpp @@ -471,11 +471,13 @@ QObject::~QObject() blockSig = 0; // unblock signals to keep QGuardedPtr happy emit destroyed( this ); emit destroyed(); - if ( objname ) + if ( objname ) { delete [] (char*)objname; + } objname = 0; - if ( pendTimer ) // might be pending timers + if ( pendTimer ) { // might be pending timers qKillTimer( this ); + } QApplication::removePostedEvents( this ); if ( isTree ) { remove_tree( this ); // remove from global root list @@ -755,12 +757,17 @@ QObject* QObject::child( const char *objName, const char *inheritsClass, bool QObject::event( QEvent *e ) { #if defined(QT_CHECK_NULL) - if ( e == 0 ) + if ( e == 0 ) { qWarning( "QObject::event: Null events are not permitted" ); + } #endif + if ( wasDeleted ) { + return TRUE; + } if ( eventFilters ) { // try filters - if ( activate_filters(e) ) // stopped by a filter + if ( activate_filters(e) ) { // stopped by a filter return TRUE; + } } switch ( e->type() ) { |
