diff --git a/cJSON.c b/cJSON.c index e3fd23c..a8d8efd 100644 --- a/cJSON.c +++ b/cJSON.c @@ -1852,28 +1852,8 @@ static cJSON *DetachItemFromArray(cJSON *array, size_t which) c = c->next; which--; } - if (!c) - { - /* item doesn't exist */ - return NULL; - } - if (c->prev) - { - /* not the first element */ - c->prev->next = c->next; - } - if (c->next) - { - c->next->prev = c->prev; - } - if (c==array->child) - { - array->child = c->next; - } - /* make sure the detached item doesn't point anywhere anymore */ - c->prev = c->next = NULL; - return c; + return cJSON_DetachItemViaPointer(array, c); } CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which) { @@ -1892,19 +1872,13 @@ CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which) CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string) { - size_t i = 0; cJSON *c = object->child; while (c && (case_insensitive_strcmp((unsigned char*)c->string, (const unsigned char*)string) != 0)) { - i++; c = c->next; } - if (c) - { - return DetachItemFromArray(object, i); - } - return NULL; + return cJSON_DetachItemViaPointer(object, c); } CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string)