X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/69418a8e475a23318b21ef06bc9f3c69e1ddbb58..85d10d9bbb92b967eea4d2307ce4956aff5e6f46:/src/common/wincmn.cpp diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index 153a0408af..2fead4a77e 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -178,7 +178,7 @@ wxWindowBase::~wxWindowBase() // Just in case we've loaded a top-level window via LoadNativeDialog but // we weren't a dialog class wxTopLevelWindows.DeleteObject(this); - + wxASSERT_MSG( GetChildren().GetCount() == 0, "children not destroyed" ); if ( m_windowValidator ) @@ -244,15 +244,21 @@ bool wxWindowBase::Close(bool force) bool wxWindowBase::DestroyChildren() { wxWindowList::Node *node; - while ( (node = GetChildren().GetFirst()) ) + for ( ;; ) { + // we iterate until the list becomes empty + node = GetChildren().GetFirst(); + if ( !node ) + break; + wxWindow *child = node->GetData(); - - wxASSERT_MSG( child, "m_children contains empty nodes" ); - + + wxASSERT_MSG( child, "children list contains empty nodes" ); + delete child; - - wxASSERT_MSG( !GetChildren().Find(child), "child didn't remove itself using RemoveChild()" ); + + wxASSERT_MSG( !GetChildren().Find(child), + "child didn't remove itself using RemoveChild()" ); } return TRUE;