From 9b513e786c2046c466580d1ed8b948fd5b56d264 Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Sun, 13 Feb 2011 13:12:28 +0000 Subject: [PATCH] Fix a bug in our Xutf8LookupString() usage. --- caca/driver/x11.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/caca/driver/x11.c b/caca/driver/x11.c index 822d33a..7c690db 100644 --- a/caca/driver/x11.c +++ b/caca/driver/x11.c @@ -521,6 +521,9 @@ static int x11_get_event(caca_display_t *dp, caca_privevent_t *ev) dp->drv.p->event_mask, &xevent) == True) { KeySym keysym; +#if defined X_HAVE_UTF8_STRING + int len; +#endif /* Expose event */ if(xevent.type == Expose) @@ -602,15 +605,16 @@ static int x11_get_event(caca_display_t *dp, caca_privevent_t *ev) continue; #if defined X_HAVE_UTF8_STRING - if(Xutf8LookupString(dp->drv.p->ic, &xevent.xkey, ev->data.key.utf8, 8, NULL, NULL)) + len = Xutf8LookupString(dp->drv.p->ic, &xevent.xkey, + ev->data.key.utf8, 8, NULL, NULL); + ev->data.key.utf8[len] = 0; + if (len) { ev->data.key.utf32 = caca_utf8_to_utf32(ev->data.key.utf8, NULL); if(ev->data.key.utf32 <= 0xff) - { ev->data.key.ch = ev->data.key.utf32; - } else { + else ev->data.key.ch = 0; - } return 1; } #endif