From: cedric Date: Fri, 17 Feb 2012 11:16:01 +0000 (+0000) Subject: eina: fix forgotten initialization of count during eina_list_split_list. X-Git-Tag: 2.0_alpha~33^2~20 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7a8af9532bfc955d0e9277ad9a64668a0a4c1945;p=framework%2Fuifw%2Feina.git eina: fix forgotten initialization of count during eina_list_split_list. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@68067 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/ChangeLog b/ChangeLog index 9372b9c..fc31b21 100644 --- a/ChangeLog +++ b/ChangeLog @@ -218,3 +218,7 @@ this is a same kind of visual hint for the purpose of the pointer, but again, the two types are interchangeable. +2012-02-17 Cedric Bail + + * Fix forgotten initialization of eina list count during eina_list_split_list. + diff --git a/src/lib/eina_list.c b/src/lib/eina_list.c index b83e715..c85855f 100644 --- a/src/lib/eina_list.c +++ b/src/lib/eina_list.c @@ -1172,6 +1172,7 @@ eina_list_split_list(Eina_List *list, Eina_List *relative, Eina_List **right) next->prev = NULL; next->accounting = _eina_list_mempool_accounting_new(next); next->accounting->last = list->accounting->last; + next->accounting->count = 0; *right = next; itr = next; diff --git a/src/tests/eina_test_list.c b/src/tests/eina_test_list.c index 6e08847..ce70d03 100644 --- a/src/tests/eina_test_list.c +++ b/src/tests/eina_test_list.c @@ -338,10 +338,50 @@ START_TEST(eina_test_sorted_insert) } END_TEST +START_TEST(eina_test_list_split) +{ + Eina_List *left = NULL, *right = NULL ; + Eina_List *list = NULL; + Eina_List *l; + void *list_data; + int i; + + eina_init(); + + list = eina_list_append(list, "tigh"); + list = eina_list_append(list, "adar"); + list = eina_list_append(list, "baltar"); + list = eina_list_append(list, "roslin"); + list = eina_list_append(list, "baltar"); + list = eina_list_append(list, "roslin"); + list = eina_list_append(list, "baltar"); + list = eina_list_append(list, "roslin"); + + fail_if(list == NULL); + fail_if(eina_list_count(list) != 8); + + for ( i = 0; i < 200; i++) + { + left = eina_list_split_list(list, eina_list_nth_list(list, i % 2), &right); + + if (i % 2 == 0) + fail_if(eina_list_count(left) == 1 && eina_list_count(right) + eina_list_count(left) == i + 7); + else + fail_if(eina_list_count(left) == 2 && eina_list_count(right) + eina_list_count(left) == i + 7); + + list = eina_list_merge(left, right); + list = eina_list_append(list, "roslin"); + } + + eina_shutdown(); +} +END_TEST + void eina_test_list(TCase *tc) { tcase_add_test(tc, eina_test_simple); tcase_add_test(tc, eina_test_merge); tcase_add_test(tc, eina_test_sorted_insert); + tcase_add_test(tc, eina_test_list_split); }