diff --git a/cJSON_Utils.c b/cJSON_Utils.c index 8d9d741..6f40c0d 100644 --- a/cJSON_Utils.c +++ b/cJSON_Utils.c @@ -482,20 +482,26 @@ int cJSONUtils_ApplyPatches(cJSON *object, cJSON *patches) return 0; } -static void cJSONUtils_GeneratePatch(cJSON *patches,const char *op,const char *path,const char *suffix,cJSON *val) +static void cJSONUtils_GeneratePatch(cJSON *patches, const char *op, const char *path, const char *suffix, cJSON *val) { - cJSON *patch=cJSON_CreateObject(); - cJSON_AddItemToObject(patch,"op",cJSON_CreateString(op)); - if (suffix) - { - char *newpath=(char*)malloc(strlen(path)+cJSONUtils_PointerEncodedstrlen(suffix)+2); - cJSONUtils_PointerEncodedstrcpy(newpath+sprintf(newpath,"%s/",path),suffix); - cJSON_AddItemToObject(patch,"path",cJSON_CreateString(newpath)); - free(newpath); - } - else cJSON_AddItemToObject(patch,"path",cJSON_CreateString(path)); - if (val) cJSON_AddItemToObject(patch,"value",cJSON_Duplicate(val,1)); - cJSON_AddItemToArray(patches,patch); + cJSON *patch = cJSON_CreateObject(); + cJSON_AddItemToObject(patch, "op", cJSON_CreateString(op)); + if (suffix) + { + char *newpath = (char*)malloc(strlen(path) + cJSONUtils_PointerEncodedstrlen(suffix) + 2); + cJSONUtils_PointerEncodedstrcpy(newpath + sprintf(newpath, "%s/", path), suffix); + cJSON_AddItemToObject(patch, "path", cJSON_CreateString(newpath)); + free(newpath); + } + else + { + cJSON_AddItemToObject(patch, "path", cJSON_CreateString(path)); + } + if (val) + { + cJSON_AddItemToObject(patch, "value", cJSON_Duplicate(val, 1)); + } + cJSON_AddItemToArray(patches, patch); } void cJSONUtils_AddPatchToArray(cJSON *array,const char *op,const char *path,cJSON *val) {cJSONUtils_GeneratePatch(array,op,path,0,val);}