Explorar o código

fix #55 memory leak in cJSON_ReplaceItemInObject

Max Bruckner %!s(int64=8) %!d(string=hai) anos
pai
achega
0d10e279c8
Modificáronse 1 ficheiros con 6 adicións e 0 borrados
  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);
     }