|
|
@ -235,10 +235,12 @@ CJSON_PUBLIC(void) cJSON_Delete(cJSON *item) |
|
|
|
if (!(item->type & cJSON_IsReference) && (item->valuestring != NULL)) |
|
|
|
{ |
|
|
|
global_hooks.deallocate(item->valuestring); |
|
|
|
item->valuestring = NULL; |
|
|
|
} |
|
|
|
if (!(item->type & cJSON_StringIsConst) && (item->string != NULL)) |
|
|
|
{ |
|
|
|
global_hooks.deallocate(item->string); |
|
|
|
item->string = NULL; |
|
|
|
} |
|
|
|
global_hooks.deallocate(item); |
|
|
|
item = next; |
|
|
@ -820,6 +822,7 @@ fail: |
|
|
|
if (output != NULL) |
|
|
|
{ |
|
|
|
input_buffer->hooks.deallocate(output); |
|
|
|
output = NULL; |
|
|
|
} |
|
|
|
|
|
|
|
if (input_pointer != NULL) |
|
|
@ -1165,6 +1168,7 @@ static unsigned char *print(const cJSON * const item, cJSON_bool format, const i |
|
|
|
|
|
|
|
/* free the buffer */ |
|
|
|
hooks->deallocate(buffer->buffer); |
|
|
|
buffer->buffer = NULL; |
|
|
|
} |
|
|
|
|
|
|
|
return printed; |
|
|
@ -1173,11 +1177,13 @@ fail: |
|
|
|
if (buffer->buffer != NULL) |
|
|
|
{ |
|
|
|
hooks->deallocate(buffer->buffer); |
|
|
|
buffer->buffer = NULL; |
|
|
|
} |
|
|
|
|
|
|
|
if (printed != NULL) |
|
|
|
{ |
|
|
|
hooks->deallocate(printed); |
|
|
|
printed = NULL; |
|
|
|
} |
|
|
|
|
|
|
|
return NULL; |
|
|
@ -1218,6 +1224,7 @@ CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON |
|
|
|
if (!print_value(item, &p)) |
|
|
|
{ |
|
|
|
global_hooks.deallocate(p.buffer); |
|
|
|
p.buffer = NULL; |
|
|
|
return NULL; |
|
|
|
} |
|
|
|
|
|
|
@ -2987,4 +2994,5 @@ CJSON_PUBLIC(void *) cJSON_malloc(size_t size) |
|
|
|
CJSON_PUBLIC(void) cJSON_free(void *object) |
|
|
|
{ |
|
|
|
global_hooks.deallocate(object); |
|
|
|
object = NULL; |
|
|
|
} |
|
|
|