summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/share/utf8/charset.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/share/utf8/charset.c b/src/share/utf8/charset.c
index 4c471694..5c5693d1 100644
--- a/src/share/utf8/charset.c
+++ b/src/share/utf8/charset.c
@@ -485,7 +485,7 @@ int charset_convert(const char *fromcode, const char *tocode,
{
int ret = 0;
struct charset *charset1, *charset2;
- char *tobuf, *p, *newbuf;
+ char *tobuf, *p;
int i, j, wc;
charset1 = charset_find(fromcode);
@@ -520,8 +520,10 @@ int charset_convert(const char *fromcode, const char *tocode,
*tolen = p - tobuf;
*p++ = '\0';
if (to) {
- newbuf = realloc(tobuf, p - tobuf);
- *to = newbuf ? newbuf : tobuf;
+ char *tobuf_saved = tobuf;
+ *to = realloc(tobuf, p - tobuf);
+ if (*to == NULL)
+ *to = tobuf_saved;
}
else
free(tobuf);