From c12291f32cc36c76c3478a5c5c48f41caeed6b55 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 18 Mar 2007 17:48:04 +0000 Subject: [PATCH] fix XModifierKeymap memory leak (patch 1683137) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44894 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/unix/utilsx11.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/unix/utilsx11.cpp b/src/unix/utilsx11.cpp index aa349b3efc..f6627e6e69 100644 --- a/src/unix/utilsx11.cpp +++ b/src/unix/utilsx11.cpp @@ -811,13 +811,15 @@ bool wxGetKeyState(wxKeyCode key) Window wDummy1, wDummy2; int iDummy3, iDummy4, iDummy5, iDummy6; unsigned int iMask; - XModifierKeymap* map = XGetModifierMapping(pDisplay); KeyCode keyCode = XKeysymToKeycode(pDisplay,iKey); if (keyCode == NoSymbol) return false; if ( IsModifierKey(iKey) ) // If iKey is a modifier key, use a different method { + XModifierKeymap *map = XGetModifierMapping(pDisplay); + wxCHECK_MSG( map, false, _T("failed to get X11 modifiers map") ); + for (int i = 0; i < 8; ++i) { if ( map->modifiermap[map->max_keypermod * i] == keyCode) @@ -833,13 +835,13 @@ bool wxGetKeyState(wxKeyCode key) } // From the XLib manual: - // The XQueryKeymap() function returns a bit vector for the logical state of the keyboard, - // where each bit set to 1 indicates that the corresponding key is currently pressed down. - // The vector is represented as 32 bytes. Byte N (from 0) contains the bits for keys 8N to 8N + 7 + // The XQueryKeymap() function returns a bit vector for the logical state of the keyboard, + // where each bit set to 1 indicates that the corresponding key is currently pressed down. + // The vector is represented as 32 bytes. Byte N (from 0) contains the bits for keys 8N to 8N + 7 // with the least-significant bit in the byte representing key 8N. char key_vector[32]; XQueryKeymap(pDisplay, key_vector); - return key_vector[keyCode >> 3] & (1 << (keyCode & 7)); + return key_vector[keyCode >> 3] & (1 << (keyCode & 7)); } #endif // __WXX11__ || __WXGTK__ || __WXMOTIF__ -- 2.45.2