From 94356f539a839a5c5b3366646b793023bebec7c7 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 30 Apr 2007 19:48:04 +0000 Subject: [PATCH] fix m_sizerPage memory leak for the wizards not using sizers (replaces patch 1708331, fixes bug 1647290) [backport from HEAD] git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@45723 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + include/wx/generic/wizard.h | 4 ++++ src/generic/wizard.cpp | 9 +++++++++ 3 files changed, 14 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index 516fc6a37e..6378aa55b5 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -105,6 +105,7 @@ All (Unix): All (GUI): - Allow status bar children in XRC (Edmunt Pienkowski) +- Fix memory leak in wxWizard when not using sizers for the page layout wxMSW: diff --git a/include/wx/generic/wizard.h b/include/wx/generic/wizard.h index 52940b2a82..02309299ad 100644 --- a/include/wx/generic/wizard.h +++ b/include/wx/generic/wizard.h @@ -45,6 +45,10 @@ public: long style = wxDEFAULT_DIALOG_STYLE); void Init(); +#if wxABI_VERSION >= 20804 + virtual ~wxWizard(); +#endif + // implement base class pure virtuals virtual bool RunWizard(wxWizardPage *firstPage); virtual wxWizardPage *GetCurrentPage() const; diff --git a/src/generic/wizard.cpp b/src/generic/wizard.cpp index 385a10d8b8..01eed934a5 100644 --- a/src/generic/wizard.cpp +++ b/src/generic/wizard.cpp @@ -326,6 +326,15 @@ bool wxWizard::Create(wxWindow *parent, return result; } +wxWizard::~wxWizard() +{ + // normally we don't have to delete this sizer as it's deleted by the + // associated window but if we never used it or didn't set it as the window + // sizer yet, do delete it manually + if ( !m_usingSizer || !m_started ) + delete m_sizerPage; +} + void wxWizard::AddBitmapRow(wxBoxSizer *mainColumn) { m_sizerBmpAndPage = new wxBoxSizer(wxHORIZONTAL);