diff options
author | marha <marha@users.sourceforge.net> | 2011-02-03 11:20:18 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-02-03 11:20:18 +0000 |
commit | 46fbac6f1b19416ee1dbca883f0d09d9fd75d1eb (patch) | |
tree | 2ddc90cb6bc4f04db80d66a334ecaabf139c0176 /libX11/modules/im/ximcp/imLcLkup.c | |
parent | 97f3d3043a79d6031787c246a67d2a02ff0a8d08 (diff) | |
parent | 83a4fe0dc71aafbef11477b284abe530d3877556 (diff) | |
download | vcxsrv-46fbac6f1b19416ee1dbca883f0d09d9fd75d1eb.tar.gz vcxsrv-46fbac6f1b19416ee1dbca883f0d09d9fd75d1eb.tar.bz2 vcxsrv-46fbac6f1b19416ee1dbca883f0d09d9fd75d1eb.zip |
svn merge ^/branches/released .
Diffstat (limited to 'libX11/modules/im/ximcp/imLcLkup.c')
-rw-r--r-- | libX11/modules/im/ximcp/imLcLkup.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/libX11/modules/im/ximcp/imLcLkup.c b/libX11/modules/im/ximcp/imLcLkup.c index 22850a964..813efcd25 100644 --- a/libX11/modules/im/ximcp/imLcLkup.c +++ b/libX11/modules/im/ximcp/imLcLkup.c @@ -61,11 +61,14 @@ _XimLocalMbLookupString(XIC xic, XKeyEvent *ev, char *buffer, int bytes, ||(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=malloc(XLC_PUBLIC(ic->core.im->core.lcd, mb_cur_max)); + char *mb=alloca(XLC_PUBLIC(ic->core.im->core.lcd, mb_cur_max)); ret = _Xlcwctomb(ic->core.im->core.lcd, mb, BRL_UC_ROW | pattern); + if(ret < 0) { + if(status) *status = XLookupNone; + return(0); + } if(ret > bytes) { if(status) *status = XBufferOverflow; - free(mb); return(ret); } if(keysym) { @@ -74,7 +77,6 @@ _XimLocalMbLookupString(XIC xic, XKeyEvent *ev, char *buffer, int bytes, } 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) { |