|
@@ -1929,7 +1929,7 @@ static cJSON_bool add_item_to_array(cJSON *array, cJSON *item)
|
|
{
|
|
{
|
|
cJSON *child = NULL;
|
|
cJSON *child = NULL;
|
|
|
|
|
|
- if ((item == NULL) || (array == NULL))
|
|
|
|
|
|
+ if ((item == NULL) || (array == NULL) || (array == item))
|
|
{
|
|
{
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
@@ -1968,9 +1968,9 @@ static cJSON_bool add_item_to_array(cJSON *array, cJSON *item)
|
|
}
|
|
}
|
|
|
|
|
|
/* Add item to array/object. */
|
|
/* Add item to array/object. */
|
|
-CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON *array, cJSON *item)
|
|
|
|
|
|
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item)
|
|
{
|
|
{
|
|
- add_item_to_array(array, item);
|
|
|
|
|
|
+ return add_item_to_array(array, item);
|
|
}
|
|
}
|
|
|
|
|
|
#if defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5))))
|
|
#if defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5))))
|
|
@@ -1994,7 +1994,7 @@ static cJSON_bool add_item_to_object(cJSON * const object, const char * const st
|
|
char *new_key = NULL;
|
|
char *new_key = NULL;
|
|
int new_type = cJSON_Invalid;
|
|
int new_type = cJSON_Invalid;
|
|
|
|
|
|
- if ((object == NULL) || (string == NULL) || (item == NULL))
|
|
|
|
|
|
+ if ((object == NULL) || (string == NULL) || (item == NULL) || (object == item))
|
|
{
|
|
{
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
@@ -2026,35 +2026,35 @@ static cJSON_bool add_item_to_object(cJSON * const object, const char * const st
|
|
return add_item_to_array(object, item);
|
|
return add_item_to_array(object, item);
|
|
}
|
|
}
|
|
|
|
|
|
-CJSON_PUBLIC(void) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item)
|
|
|
|
|
|
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item)
|
|
{
|
|
{
|
|
- add_item_to_object(object, string, item, &global_hooks, false);
|
|
|
|
|
|
+ return add_item_to_object(object, string, item, &global_hooks, false);
|
|
}
|
|
}
|
|
|
|
|
|
/* Add an item to an object with constant string as key */
|
|
/* Add an item to an object with constant string as key */
|
|
-CJSON_PUBLIC(void) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item)
|
|
|
|
|
|
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item)
|
|
{
|
|
{
|
|
- add_item_to_object(object, string, item, &global_hooks, true);
|
|
|
|
|
|
+ return add_item_to_object(object, string, item, &global_hooks, true);
|
|
}
|
|
}
|
|
|
|
|
|
-CJSON_PUBLIC(void) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item)
|
|
|
|
|
|
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item)
|
|
{
|
|
{
|
|
if (array == NULL)
|
|
if (array == NULL)
|
|
{
|
|
{
|
|
- return;
|
|
|
|
|
|
+ return false;
|
|
}
|
|
}
|
|
|
|
|
|
- add_item_to_array(array, create_reference(item, &global_hooks));
|
|
|
|
|
|
+ return add_item_to_array(array, create_reference(item, &global_hooks));
|
|
}
|
|
}
|
|
|
|
|
|
-CJSON_PUBLIC(void) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item)
|
|
|
|
|
|
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item)
|
|
{
|
|
{
|
|
if ((object == NULL) || (string == NULL))
|
|
if ((object == NULL) || (string == NULL))
|
|
{
|
|
{
|
|
- return;
|
|
|
|
|
|
+ return false;
|
|
}
|
|
}
|
|
|
|
|
|
- add_item_to_object(object, string, create_reference(item, &global_hooks), &global_hooks, false);
|
|
|
|
|
|
+ return add_item_to_object(object, string, create_reference(item, &global_hooks), &global_hooks, false);
|
|
}
|
|
}
|
|
|
|
|
|
CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name)
|
|
CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name)
|
|
@@ -2235,20 +2235,19 @@ CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const
|
|
}
|
|
}
|
|
|
|
|
|
/* Replace array/object items with new ones. */
|
|
/* Replace array/object items with new ones. */
|
|
-CJSON_PUBLIC(void) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem)
|
|
|
|
|
|
+CJSON_PUBLIC(cJSON_bool) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem)
|
|
{
|
|
{
|
|
cJSON *after_inserted = NULL;
|
|
cJSON *after_inserted = NULL;
|
|
|
|
|
|
if (which < 0)
|
|
if (which < 0)
|
|
{
|
|
{
|
|
- return;
|
|
|
|
|
|
+ return false;
|
|
}
|
|
}
|
|
|
|
|
|
after_inserted = get_array_item(array, (size_t)which);
|
|
after_inserted = get_array_item(array, (size_t)which);
|
|
if (after_inserted == NULL)
|
|
if (after_inserted == NULL)
|
|
{
|
|
{
|
|
- add_item_to_array(array, newitem);
|
|
|
|
- return;
|
|
|
|
|
|
+ return add_item_to_array(array, newitem);
|
|
}
|
|
}
|
|
|
|
|
|
newitem->next = after_inserted;
|
|
newitem->next = after_inserted;
|
|
@@ -2262,6 +2261,7 @@ CJSON_PUBLIC(void) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newit
|
|
{
|
|
{
|
|
newitem->prev->next = newitem;
|
|
newitem->prev->next = newitem;
|
|
}
|
|
}
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
|
|
|
|
CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement)
|
|
CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement)
|
|
@@ -2305,14 +2305,14 @@ CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
-CJSON_PUBLIC(void) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem)
|
|
|
|
|
|
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem)
|
|
{
|
|
{
|
|
if (which < 0)
|
|
if (which < 0)
|
|
{
|
|
{
|
|
- return;
|
|
|
|
|
|
+ return false;
|
|
}
|
|
}
|
|
|
|
|
|
- cJSON_ReplaceItemViaPointer(array, get_array_item(array, (size_t)which), newitem);
|
|
|
|
|
|
+ return cJSON_ReplaceItemViaPointer(array, get_array_item(array, (size_t)which), newitem);
|
|
}
|
|
}
|
|
|
|
|
|
static cJSON_bool replace_item_in_object(cJSON *object, const char *string, cJSON *replacement, cJSON_bool case_sensitive)
|
|
static cJSON_bool replace_item_in_object(cJSON *object, const char *string, cJSON *replacement, cJSON_bool case_sensitive)
|
|
@@ -2330,19 +2330,17 @@ static cJSON_bool replace_item_in_object(cJSON *object, const char *string, cJSO
|
|
replacement->string = (char*)cJSON_strdup((const unsigned char*)string, &global_hooks);
|
|
replacement->string = (char*)cJSON_strdup((const unsigned char*)string, &global_hooks);
|
|
replacement->type &= ~cJSON_StringIsConst;
|
|
replacement->type &= ~cJSON_StringIsConst;
|
|
|
|
|
|
- cJSON_ReplaceItemViaPointer(object, get_object_item(object, string, case_sensitive), replacement);
|
|
|
|
-
|
|
|
|
- return true;
|
|
|
|
|
|
+ return cJSON_ReplaceItemViaPointer(object, get_object_item(object, string, case_sensitive), replacement);
|
|
}
|
|
}
|
|
|
|
|
|
-CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem)
|
|
|
|
|
|
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem)
|
|
{
|
|
{
|
|
- replace_item_in_object(object, string, newitem, false);
|
|
|
|
|
|
+ return replace_item_in_object(object, string, newitem, false);
|
|
}
|
|
}
|
|
|
|
|
|
-CJSON_PUBLIC(void) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object, const char *string, cJSON *newitem)
|
|
|
|
|
|
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object, const char *string, cJSON *newitem)
|
|
{
|
|
{
|
|
- replace_item_in_object(object, string, newitem, true);
|
|
|
|
|
|
+ return replace_item_in_object(object, string, newitem, true);
|
|
}
|
|
}
|
|
|
|
|
|
/* Create basic types: */
|
|
/* Create basic types: */
|