1
Index: libx11-1.1.4/modules/im/ximcp/imThaiFlt.c
2
===================================================================
3
--- libx11-1.1.4.orig/modules/im/ximcp/imThaiFlt.c 2008-07-17 21:15:44.000000000 +0700
4
+++ libx11-1.1.4/modules/im/ximcp/imThaiFlt.c 2008-07-17 21:39:48.000000000 +0700
16
+ im = (Xim) XIMOfIC((XIC)ic);
17
if (screc.text->encoding_is_wchar) {
18
- c = ucs2tis(screc.text->string.wcs[0]);
19
- XFree(screc.text->string.wcs);
20
+ conv = _XlcOpenConverter(im->core.lcd, XlcNWideChar,
21
+ im->core.lcd, XlcNCharSet);
22
+ from_buf = (char *) screc.text->string.wcs;
23
+ from_left = screc.text->length * sizeof(wchar_t);
25
- c = screc.text->string.mbs[0];
26
- XFree(screc.text->string.mbs);
27
+ conv = _XlcOpenConverter(im->core.lcd, XlcNMultiByte,
28
+ im->core.lcd, XlcNCharSet);
29
+ from_buf = screc.text->string.mbs;
30
+ from_left = screc.text->length;
32
+ to_buf = (char *)&c;
35
+ _XlcResetConverter(conv);
36
+ if (_XlcConvert(conv, (XPointer *)&from_buf, &from_left,
37
+ (XPointer *)&to_buf, &to_left, NULL, 0) < 0)
39
+ c = (unsigned char) b->mb[b->tree[(ic)->private.local.context].mb];
41
+ _XlcCloseConverter(conv);
43
+ XFree(screc.text->string.mbs);