From 8816a568ab02ee907b0b6e1909680846b43d49e1 Mon Sep 17 00:00:00 2001 From: Max Bruckner Date: Tue, 2 May 2017 00:34:17 +0200 Subject: [PATCH] Add cJSON_DetachItemFromObjectCaseSensitive --- cJSON.c | 15 +++++++++------ cJSON.h | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/cJSON.c b/cJSON.c index 853b723..74f17ba 100644 --- a/cJSON.c +++ b/cJSON.c @@ -1878,13 +1878,16 @@ CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which) CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string) { - cJSON *c = object->child; - while (c && (case_insensitive_strcmp((unsigned char*)c->string, (const unsigned char*)string) != 0)) - { - c = c->next; - } + cJSON *to_detach = cJSON_GetObjectItem(object, string); - return cJSON_DetachItemViaPointer(object, c); + return cJSON_DetachItemViaPointer(object, to_detach); +} + +CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string) +{ + cJSON *to_detach = cJSON_GetObjectItemCaseSensitive(object, string); + + return cJSON_DetachItemViaPointer(object, to_detach); } CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string) diff --git a/cJSON.h b/cJSON.h index 7247be7..0d69601 100644 --- a/cJSON.h +++ b/cJSON.h @@ -207,6 +207,7 @@ CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const it CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which); CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which); CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string); +CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string); CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string); /* Update array items. */