Bläddra i källkod

fix #55 memory leak in cJSON_ReplaceItemInObject

Max Bruckner 8 år sedan
förälder
incheckning
0d10e279c8
1 ändrade filer med 6 tillägg och 0 borttagningar
  1. 6 0
      cJSON.c

+ 6 - 0
cJSON.c

@@ -1861,6 +1861,12 @@ void cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem
     }
     if(c)
     {
+        /* free the old string if not const */
+        if (!(newitem->type & cJSON_StringIsConst) && newitem->string)
+        {
+             cJSON_free(newitem->string);
+        }
+
         newitem->string = cJSON_strdup(string);
         cJSON_ReplaceItemInArray(object, i, newitem);
     }