diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp index 516a0acf10..4cc829b673 100644 --- a/src/common/appcmn.cpp +++ b/src/common/appcmn.cpp @@ -366,11 +366,14 @@ void wxAppBase::DeletePendingObjects() { wxObject *obj = node->GetData(); - delete obj; - - if (wxPendingDelete.Member(obj)) + // remove it from the list first so that if we get back here somehow + // during the object deletion (e.g. wxYield called from its dtor) we + // wouldn't try to delete it the second time + if ( wxPendingDelete.Member(obj) ) wxPendingDelete.Erase(node); + delete obj; + // Deleting one object may have deleted other pending // objects, so start from beginning of list again. node = wxPendingDelete.GetFirst();