Really fix the off-by-one error in json_array_remove()
It didn't affect only the last element but all of them. One item too much was always moved.
This commit is contained in:
parent
54d59c743c
commit
e0a7f81b39
@ -511,7 +511,7 @@ int json_array_remove(json_t *json, size_t index)
|
|||||||
|
|
||||||
/* If we're removing the last element, nothing has to be moved */
|
/* If we're removing the last element, nothing has to be moved */
|
||||||
if(index < array->entries - 1)
|
if(index < array->entries - 1)
|
||||||
array_move(array, index, index + 1, array->entries - index);
|
array_move(array, index, index + 1, array->entries - index - 1);
|
||||||
|
|
||||||
array->entries--;
|
array->entries--;
|
||||||
|
|
||||||
|
@ -264,8 +264,8 @@ static void test_remove(void)
|
|||||||
if(json_array_size(array) != 8)
|
if(json_array_size(array) != 8)
|
||||||
fail("unable to append 8 items to array");
|
fail("unable to append 8 items to array");
|
||||||
|
|
||||||
/* Remove the last element from a "full" array. */
|
/* Remove an element from a "full" array. */
|
||||||
json_array_remove(array, 7);
|
json_array_remove(array, 5);
|
||||||
|
|
||||||
json_decref(five);
|
json_decref(five);
|
||||||
json_decref(seven);
|
json_decref(seven);
|
||||||
|
Loading…
Reference in New Issue
Block a user