From 60a7194e4360353f4cbed03bf66a3cf0b7debff8 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 19 Mar 2010 09:57:15 +0000 Subject: [PATCH] Postpone initialization of owner-drawn menu metrics. Doing it during globals initialization time didn't work and could even result in a crash due to dereferencing a NULL wxTheApp pointer. Closes #11806. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63712 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/menuitem.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/msw/menuitem.cpp b/src/msw/menuitem.cpp index 83d879ce26..a5233965bf 100644 --- a/src/msw/menuitem.cpp +++ b/src/msw/menuitem.cpp @@ -241,6 +241,15 @@ public: static const MenuDrawData* Get() { + // notice that s_menuData can't be created as a global variable because + // it needs a window to initialize and no windows exist at the time of + // globals initialization yet + if ( !ms_instance ) + { + static MenuDrawData s_menuData; + ms_instance = &s_menuData; + } + #if wxUSE_UXTHEME bool theme = MenuLayout() == FullTheme; if ( ms_instance->Theme != theme ) @@ -251,7 +260,6 @@ public: MenuDrawData() { - ms_instance = this; Init(); } @@ -299,8 +307,6 @@ private: MenuDrawData* MenuDrawData::ms_instance = NULL; -MenuDrawData s_menuData; - void MenuDrawData::Init() { #if wxUSE_UXTHEME -- 2.45.2