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:
Petri Lehtinen 2012-12-04 21:20:57 +02:00
parent 54d59c743c
commit e0a7f81b39
2 changed files with 3 additions and 3 deletions

View File

@ -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(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--;

View File

@ -264,8 +264,8 @@ static void test_remove(void)
if(json_array_size(array) != 8)
fail("unable to append 8 items to array");
/* Remove the last element from a "full" array. */
json_array_remove(array, 7);
/* Remove an element from a "full" array. */
json_array_remove(array, 5);
json_decref(five);
json_decref(seven);