]> git.saurik.com Git - wxWidgets.git/commitdiff
Initialize wxMDIParentFrame::m_accelWindowMenu in default ctor.
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 21 Sep 2009 08:44:42 +0000 (08:44 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 21 Sep 2009 08:44:42 +0000 (08:44 +0000)
If wxMDIParentFrame object was created without its Create() ever being called,
it crashed in its dtor trying to delete an uninitialized pointer, so do
initialize it to NULL in all ctors (via a helper Init() method, as usual).

Closes #11216.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61986 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/mdi.h
src/msw/mdi.cpp

index eb85ec402c83a020733c49f7614b13932b37e3e8..caf235fd56a68ec7578df102d48bf70b0cdef00d 100644 (file)
@@ -24,7 +24,7 @@ class WXDLLIMPEXP_FWD_CORE wxAcceleratorTable;
 class WXDLLIMPEXP_CORE wxMDIParentFrame : public wxMDIParentFrameBase
 {
 public:
-    wxMDIParentFrame() { }
+    wxMDIParentFrame() { Init(); }
     wxMDIParentFrame(wxWindow *parent,
                      wxWindowID id,
                      const wxString& title,
@@ -33,6 +33,8 @@ public:
                      long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
                      const wxString& name = wxFrameNameStr)
     {
+        Init();
+
         Create(parent, id, title, pos, size, style, name);
     }
 
@@ -121,6 +123,9 @@ protected:
     void UpdateClientSize();
 
 private:
+    // common part of all ctors
+    void Init();
+
 #if wxUSE_MENUS
     // "Window" menu commands event handlers
     void OnMDICommand(wxCommandEvent& event);
index 104ea7a9d808bc19b599bd4406dd692c61e5f6e7..ad76a20f54d2e16b2a3d1691e06460ccdddd24fe 100644 (file)
@@ -138,6 +138,14 @@ END_EVENT_TABLE()
 // the children
 // ===========================================================================
 
+void wxMDIParentFrame::Init()
+{
+#if wxUSE_MENUS && wxUSE_ACCEL
+  // the default menu doesn't have any accelerators (even if we have it)
+  m_accelWindowMenu = NULL;
+#endif // wxUSE_MENUS && wxUSE_ACCEL
+}
+
 bool wxMDIParentFrame::Create(wxWindow *parent,
                               wxWindowID id,
                               const wxString& title,
@@ -162,11 +170,6 @@ bool wxMDIParentFrame::Create(wxWindow *parent,
       m_windowMenu->Append(wxID_MDI_WINDOW_PREV, _("&Previous"));
   }
 
-#if wxUSE_MENUS && wxUSE_ACCEL
-  // the default menu doesn't have any accelerators (even if we have it)
-  m_accelWindowMenu = NULL;
-#endif // wxUSE_MENUS && wxUSE_ACCEL
-
   if (!parent)
     wxTopLevelWindows.Append(this);