aboutsummaryrefslogtreecommitdiff
path: root/libX11/modules/im/ximcp/imLcLkup.c
diff options
context:
space:
mode:
Diffstat (limited to 'libX11/modules/im/ximcp/imLcLkup.c')
-rw-r--r--libX11/modules/im/ximcp/imLcLkup.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libX11/modules/im/ximcp/imLcLkup.c b/libX11/modules/im/ximcp/imLcLkup.c
index b6a6ff604..4e1dd9f69 100644
--- a/libX11/modules/im/ximcp/imLcLkup.c
+++ b/libX11/modules/im/ximcp/imLcLkup.c
@@ -68,10 +68,11 @@ _XimLocalMbLookupString(xic, ev, buffer, bytes, keysym, status)
||(ic->private.local.brl_committed != 0))) {
if (ic->private.local.brl_committed != 0) { /* Braille Event */
unsigned char pattern = ic->private.local.brl_committed;
- char mb[XLC_PUBLIC(ic->core.im->core.lcd, mb_cur_max)];
+ char *mb=malloc(XLC_PUBLIC(ic->core.im->core.lcd, mb_cur_max));
ret = _Xlcwctomb(ic->core.im->core.lcd, mb, BRL_UC_ROW | pattern);
if(ret > bytes) {
if(status) *status = XBufferOverflow;
+ free(mb);
return(ret);
}
if(keysym) {
@@ -80,6 +81,7 @@ _XimLocalMbLookupString(xic, ev, buffer, bytes, keysym, status)
} else
if(status) *status = XLookupChars;
memcpy(buffer, mb, ret);
+ free(mb);
} else { /* Composed Event */
ret = strlen(&mb[b[ic->private.local.composed].mb]);
if(ret > bytes) {