Преглед изворни кода

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);
     }