share/utf8/charset.c: Cleanup realloc() usage
authorErik de Castro Lopo <erikd@mega-nerd.com>
Thu, 19 Jan 2017 09:28:18 +0000 (20:28 +1100)
committerErik de Castro Lopo <erikd@mega-nerd.com>
Thu, 19 Jan 2017 09:31:34 +0000 (20:31 +1100)
This version should be logically identical to the previous version
but prevents a false-positive from the cppcheck static analysis
tool.

src/share/utf8/charset.c

index 4c47169..5c5693d 100644 (file)
@@ -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);