]> git.saurik.com Git - wxWidgets.git/commitdiff
use empty string and not string().c_str() as title for the controls without it to...
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 17 Jun 2005 14:32:28 +0000 (14:32 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 17 Jun 2005 14:32:28 +0000 (14:32 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34693 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/control.cpp

index 8b27babb0636cb49db71bd5022faf5d09e5a7e93..a020137ad7f7367a68f625f48d1704ac40256810 100644 (file)
@@ -139,11 +139,25 @@ bool wxControl::MSWCreateControl(const wxChar *classname,
     // ... and adjust it to account for a possible parent frames toolbar
     AdjustForParentClientOrigin(x, y);
 
+    // notice the apparently unnecessary label.empty() test: without it wse get
+    // crashes when creating controls (notebook to be precise) with empty
+    // labels as for some reason Windows looks not only at first but also at
+    // the second byte of the string which is not NUL in the buffer pointed to
+    // by label.c_str() and if the buffer contains "00 cc cc cc ..." (this is
+    // what happens in debug build where 0xcc is used as uninitialized memory
+    // marker) it creates a window not with empty label but with label
+    // consisting of many Unicode (!) 0xcccc characters
+    //
+    // this is not fatal in itself, but becomes so when wxGetWindowText() is
+    // called because GetWindowTextA() overwrites ASCII buffer with Unicode (!)
+    // characters without any qualms and so crashes the program...
     m_hWnd = (WXHWND)::CreateWindowEx
                        (
                         exstyle,            // extended style
                         classname,          // the kind of control to create
-                        label,              // the window name
+                        label.empty()       // the window name
+                            ? _T("\0")
+                            : label.c_str(),
                         style,              // the window style
                         x, y, w, h,         // the window position and size
                         GetHwndOf(GetParent()),  // parent