Fix regression in list module
This commit is contained in:
parent
1ae819668a
commit
a317c3de5d
@ -204,6 +204,7 @@ list_remove_item(struct list *self, int index)
|
|||||||
int
|
int
|
||||||
list_insert_item(struct list *self, int index, tbus item)
|
list_insert_item(struct list *self, int index, tbus item)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
if (index > self->count)
|
if (index > self->count)
|
||||||
{
|
{
|
||||||
@ -219,16 +220,14 @@ list_insert_item(struct list *self, int index, tbus item)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
self->count++;
|
// Move all the items above this location up one
|
||||||
if (self->count >= 2)
|
for (i = self->count ; i > index ; --i)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
self->items[i] = self->items[i - 1];
|
||||||
for (i = (self->count - 2); i >= (unsigned int)index; i--)
|
|
||||||
{
|
|
||||||
self->items[i + 1] = self->items[i];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self->count++;
|
||||||
|
|
||||||
self->items[index] = item;
|
self->items[index] = item;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,11 @@ START_TEST(test_list__simple)
|
|||||||
val = list_get_item(lst, 10);
|
val = list_get_item(lst, 10);
|
||||||
ck_assert_int_eq(val, 10);
|
ck_assert_int_eq(val, 10);
|
||||||
|
|
||||||
|
list_insert_item(lst, 0, 99);
|
||||||
|
ck_assert_int_eq(lst->count, TEST_LIST_SIZE + 1);
|
||||||
|
val = list_get_item(lst, 10);
|
||||||
|
ck_assert_int_eq(val, 9);
|
||||||
|
|
||||||
list_clear(lst);
|
list_clear(lst);
|
||||||
ck_assert_int_eq(lst->count, 0);
|
ck_assert_int_eq(lst->count, 0);
|
||||||
list_delete(lst);
|
list_delete(lst);
|
||||||
|
Loading…
Reference in New Issue
Block a user