diff options
| author | Huang Peng <shawn.p.huang@gmail.com> | 2008-09-15 16:34:08 +0800 |
|---|---|---|
| committer | Huang Peng <shawn.p.huang@gmail.com> | 2008-09-15 16:34:08 +0800 |
| commit | 9077c76e0c531f119fb5c98d57c368e7179df479 (patch) | |
| tree | 2bfbd63d1affb0bf70daab7ac2c78f7f5d95e042 /client | |
| parent | c241fb6e7d9035db1b89135ddb0f2dfd2eed95db (diff) | |
| download | ibus-9077c76e0c531f119fb5c98d57c368e7179df479.tar.gz ibus-9077c76e0c531f119fb5c98d57c368e7179df479.tar.xz ibus-9077c76e0c531f119fb5c98d57c368e7179df479.zip | |
Free map return by XGetKeyboardMapping.
Diffstat (limited to 'client')
| -rw-r--r-- | client/qt4/ibus-client.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/client/qt4/ibus-client.cpp b/client/qt4/ibus-client.cpp index 4b97739..969a722 100644 --- a/client/qt4/ibus-client.cpp +++ b/client/qt4/ibus-client.cpp @@ -178,14 +178,15 @@ IBusClient::findYenBarKeys () int keycode_count; int keysyms_per_keycode; int keycode; + int group; KeySym *map, *syms; XDisplayKeycodes (QX11Info::display (), &min_keycode, &max_keycode); keycode_count = max_keycode - min_keycode + 1; map = XGetKeyboardMapping (QX11Info::display (), min_keycode, keycode_count, &keysyms_per_keycode); - int group; - for (group = 0; group < desc->ctrls->num_groups; group ++) { + + for (group = 0; group < desc->ctrls->num_groups && map != NULL; group ++) { if (((group << 1) & japan_groups) == 0) continue; for (syms = map, keycode = min_keycode; keycode <= max_keycode; @@ -196,7 +197,9 @@ IBusClient::findYenBarKeys () } } - XkbFreeKeyboard(desc, XkbAllComponentsMask, True); + if (map != NULL) + XFree (map); + XkbFreeKeyboard (desc, XkbAllComponentsMask, True); #endif } |
