# HG changeset patch # User Mike Becker # Date 1724957295 -7200 # Node ID cdce47f34d489a7f0dfbb110b93fd3fc8887b9e0 # Parent d607a184925a81737bc1f93c8fb3280bdcff1c30 fix inserting via iterator correctly increases element count fixes #423 diff -r d607a184925a -r cdce47f34d48 src/array_list.c --- a/src/array_list.c Tue Aug 20 18:02:39 2024 +0200 +++ b/src/array_list.c Thu Aug 29 20:48:15 2024 +0200 @@ -284,14 +284,20 @@ iter->index + 1 - prepend, elem ); - if (result == 0 && prepend != 0) { - iter->index++; - iter->elem_handle = ((char *) iter->elem_handle) + list->collection.elem_size; + if (result == 0) { + iter->elem_count++; + if (prepend != 0) { + iter->index++; + iter->elem_handle = ((char *) iter->elem_handle) + list->collection.elem_size; + } } return result; } else { int result = cx_arl_insert_element(list, list->collection.size, elem); - iter->index = list->collection.size; + if (result == 0) { + iter->elem_count++; + iter->index = list->collection.size; + } return result; } } diff -r d607a184925a -r cdce47f34d48 src/linked_list.c --- a/src/linked_list.c Tue Aug 20 18:02:39 2024 +0200 +++ b/src/linked_list.c Thu Aug 29 20:48:15 2024 +0200 @@ -892,11 +892,19 @@ assert(prepend >= 0 && prepend <= 1); cx_linked_list_node *choice[2] = {node, node->prev}; int result = cx_ll_insert_at(list, choice[prepend], elem); - iter->index += prepend * (0 == result); + if (result == 0) { + iter->elem_count++; + if (prepend) { + iter->index++; + } + } return result; } else { int result = cx_ll_insert_element(list, list->collection.size, elem); - iter->index = list->collection.size; + if (result == 0) { + iter->elem_count++; + iter->index = list->collection.size; + } return result; } }