Преглед на файлове

fix #55 memory leak in cJSON_ReplaceItemInObject

Max Bruckner преди 8 години
родител
ревизия
0d10e279c8
променени са 1 файла, в които са добавени 6 реда и са изтрити 0 реда
  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);
     }