Don't use dangling pointers in wxWindowMSW::HandleMenuChar().

We used a pointer into the result of wx_str() for a temporary string which was
clearly wrong. Store the string we're manipulating to ensure that this doesn't
happen.

This in particular fixes keyboard navigation in the menus with owner-drawn
items.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64919 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2010-07-12 22:50:28 +00:00
parent fd76c6a77d
commit 4193a1a4a4

View File

@@ -5724,7 +5724,8 @@ int wxWindowMSW::HandleMenuChar(int WXUNUSED_IN_WINCE(chAccel),
// menu creation code // menu creation code
wxMenuItem *item = (wxMenuItem*)mii.dwItemData; wxMenuItem *item = (wxMenuItem*)mii.dwItemData;
const wxChar *p = wxStrchr(item->GetItemLabel().wx_str(), wxT('&')); const wxString label(item->GetItemLabel());
const wxChar *p = wxStrchr(label.wx_str(), wxT('&'));
while ( p++ ) while ( p++ )
{ {
if ( *p == wxT('&') ) if ( *p == wxT('&') )