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

View File

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