use empty string and not string().c_str() as title for the controls without it to workaround Windows bug which results in crashes with wxUSE_STL==1 (closes 1222187)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34693 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -139,11 +139,25 @@ bool wxControl::MSWCreateControl(const wxChar *classname,
|
|||||||
// ... and adjust it to account for a possible parent frames toolbar
|
// ... and adjust it to account for a possible parent frames toolbar
|
||||||
AdjustForParentClientOrigin(x, y);
|
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
|
m_hWnd = (WXHWND)::CreateWindowEx
|
||||||
(
|
(
|
||||||
exstyle, // extended style
|
exstyle, // extended style
|
||||||
classname, // the kind of control to create
|
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
|
style, // the window style
|
||||||
x, y, w, h, // the window position and size
|
x, y, w, h, // the window position and size
|
||||||
GetHwndOf(GetParent()), // parent
|
GetHwndOf(GetParent()), // parent
|
||||||
|
Reference in New Issue
Block a user