Author: ek.kato
Date: Thu Mar 6 17:45:53 2008
New Revision: 5278
Modified:
trunk/xim/locale.cpp
Log:
* xim/locale.cpp (UTF8_Locale::utf8_to_native_str) : Simplify.
Modified: trunk/xim/locale.cpp
==============================================================================
--- trunk/xim/locale.cpp (original)
+++ trunk/xim/locale.cpp Thu Mar 6 17:45:53 2008
@@ -251,7 +251,7 @@
char *UTF8_Locale::utf8_to_native_str(char *utf8) {
size_t outbufsize = BUFSIZ;
- char *inbuf, *outbuf, *convstr = NULL;
+ char *inbuf, outbuf[BUFSIZ], *convstr = NULL;
char *inchar;
char *outchar;
size_t inbytesleft, outbytesleft;
@@ -268,10 +268,6 @@
if (!m_iconv_cd)
return strdup(inbuf);
- outbuf = (char *)malloc(outbufsize);
- if (!outbuf)
- return NULL;
-
inchar = inbuf;
outchar = outbuf;
inbytesleft = strlen(inbuf);
@@ -279,26 +275,22 @@
ret_val = iconv(m_iconv_cd, (ICONV_CONST char **)&inchar,
&inbytesleft, &outchar, &outbytesleft);
if (ret_val == (size_t)-1 && errno != E2BIG) {
//perror("error in iconv");
- free(outbuf);
return NULL;
}
ret_val = iconv(m_iconv_cd, NULL, NULL, &outchar, &outbytesleft);
if (ret_val == (size_t)-1 && errno != E2BIG) {
//perror("error in iconv");
- free(outbuf);
return NULL;
}
convstr = (char *)malloc(outbufsize - outbytesleft);
if (!convstr) {
- free(outbuf);
return NULL;
}
*outchar = '\0';
strlcpy(convstr, outbuf, outbufsize - outbytesleft);
- free(outbuf);
return convstr;
}