X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d775fa82354a1f8d5db87ad1d71ab00ef7d9123c..4f0436e4655b628b32c4e9b27837c400e46c3746:/src/common/statbar.cpp diff --git a/src/common/statbar.cpp b/src/common/statbar.cpp index 492573e98b..0544a98b67 100644 --- a/src/common/statbar.cpp +++ b/src/common/statbar.cpp @@ -29,6 +29,7 @@ #endif #ifndef WX_PRECOMP + #include "wx/frame.h" #include "wx/statusbr.h" #endif //WX_PRECOMP @@ -60,7 +61,15 @@ wxStatusBarBase::~wxStatusBarBase() { FreeWidths(); FreeStacks(); - InitStyles(); + FreeStyles(); + + // notify the frame that it doesn't have a status bar any longer to avoid + // dangling pointers + wxFrameBase *frame = wxDynamicCast(GetParent(), wxFrameBase); + if ( frame && frame->GetStatusBar() == this ) + { + frame->SetStatusBar(NULL); + } } // ---------------------------------------------------------------------------- @@ -276,12 +285,12 @@ void wxStatusBarBase::InitStacks() void wxStatusBarBase::FreeStacks() { - if(!m_statusTextStacks) return; - size_t i; + if ( !m_statusTextStacks ) + return; - for(i = 0; i < (size_t)m_nFields; ++i) + for ( size_t i = 0; i < (size_t)m_nFields; ++i ) { - if(m_statusTextStacks[i]) + if ( m_statusTextStacks[i] ) { wxListString& t = *m_statusTextStacks[i]; WX_CLEAR_LIST(wxListString, t);