summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2008-09-15 16:34:08 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2008-09-15 16:34:08 +0800
commit9077c76e0c531f119fb5c98d57c368e7179df479 (patch)
tree2bfbd63d1affb0bf70daab7ac2c78f7f5d95e042 /client
parentc241fb6e7d9035db1b89135ddb0f2dfd2eed95db (diff)
downloadibus-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.cpp9
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
}