From 58bc383b28f281148a8c9918e758827ada450bfe Mon Sep 17 00:00:00 2001 From: Max Bruckner Date: Wed, 14 Oct 2015 02:43:18 +0200 Subject: [PATCH] fix memory leaks --- cJSON_Utils.c | 6 +++++- test_utils.c | 13 ++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/cJSON_Utils.c b/cJSON_Utils.c index c4a0ae0..007f941 100644 --- a/cJSON_Utils.c +++ b/cJSON_Utils.c @@ -186,7 +186,7 @@ static int cJSONUtils_ApplyPatch(cJSON *object,cJSON *patch) cJSONUtils_InplaceDecodePointerString(childptr); /* add, remove, replace, move, copy, test. */ - if (!parent) {free(parentptr); return 9;} /* Couldn't find object to add to. */ + if (!parent) {free(parentptr); cJSON_Delete(value); return 9;} /* Couldn't find object to add to. */ else if (parent->type==cJSON_Array) { if (!strcmp(childptr,"-")) cJSON_AddItemToArray(parent,value); @@ -197,6 +197,10 @@ static int cJSONUtils_ApplyPatch(cJSON *object,cJSON *patch) cJSON_DeleteItemFromObject(parent,childptr); cJSON_AddItemToObject(parent,childptr,value); } + else + { + cJSON_Delete(value); + } free(parentptr); return 0; } diff --git a/test_utils.c b/test_utils.c index e018081..79664a5 100644 --- a/test_utils.c +++ b/test_utils.c @@ -91,9 +91,16 @@ int main() nums=cJSON_CreateIntArray(numbers,10); num6=cJSON_GetArrayItem(nums,6); cJSON_AddItemToObject(object,"numbers",nums); - printf("Pointer: [%s]\n",cJSONUtils_FindPointerFromObjectTo(object,num6)); - printf("Pointer: [%s]\n",cJSONUtils_FindPointerFromObjectTo(object,nums)); - printf("Pointer: [%s]\n",cJSONUtils_FindPointerFromObjectTo(object,object)); + char *temp=cJSONUtils_FindPointerFromObjectTo(object,num6); + printf("Pointer: [%s]\n",temp); + free(temp); + temp=cJSONUtils_FindPointerFromObjectTo(object,nums); + printf("Pointer: [%s]\n",temp); + free(temp); + temp=cJSONUtils_FindPointerFromObjectTo(object,object); + printf("Pointer: [%s]\n",temp); + free(temp); + cJSON_Delete(object); /* JSON Sort test: */ sortme=cJSON_CreateObject();