--- a/src/linked_list.c Fri Oct 17 15:04:56 2025 +0200 +++ b/src/linked_list.c Fri Oct 17 16:53:24 2025 +0200 @@ -1126,10 +1126,10 @@ static void cx_ll_iter_next(void *it) { struct cx_iterator_s *iter = it; + cx_linked_list *ll = iter->src_handle; if (iter->base.remove) { iter->base.remove = false; - struct cx_list_s *list = iter->src_handle.m; - cx_linked_list *ll = iter->src_handle.m; + struct cx_list_s *list = iter->src_handle; char *node = iter->elem_handle; iter->elem_handle = CX_LL_PTR(node, ll->loc_next); cx_invoke_destructor(list, node + ll->loc_data); @@ -1139,7 +1139,6 @@ iter->elem_count--; cxFree(list->collection.allocator, node); } else { - const cx_linked_list *ll = iter->src_handle.c; iter->index++; void *node = iter->elem_handle; iter->elem_handle = CX_LL_PTR(node, ll->loc_next); @@ -1148,10 +1147,10 @@ static void cx_ll_iter_prev(void *it) { struct cx_iterator_s *iter = it; + cx_linked_list *ll = iter->src_handle; if (iter->base.remove) { iter->base.remove = false; - struct cx_list_s *list = iter->src_handle.m; - cx_linked_list *ll = iter->src_handle.m; + struct cx_list_s *list = iter->src_handle; char *node = iter->elem_handle; iter->elem_handle = CX_LL_PTR(node, ll->loc_prev); iter->index--; @@ -1162,7 +1161,6 @@ iter->elem_count--; cxFree(list->collection.allocator, node); } else { - const cx_linked_list *ll = iter->src_handle.c; iter->index--; char *node = iter->elem_handle; iter->elem_handle = CX_LL_PTR(node, ll->loc_prev); @@ -1171,7 +1169,7 @@ static void *cx_ll_iter_current(const void *it) { const struct cx_iterator_s *iter = it; - const cx_linked_list *ll = iter->src_handle.c; + const cx_linked_list *ll = iter->src_handle; char *node = iter->elem_handle; return node + ll->loc_data; } @@ -1183,14 +1181,14 @@ ) { CxIterator iter; iter.index = index; - iter.src_handle.c = list; + iter.src_handle = (void*)list; iter.elem_handle = cx_ll_node_at((const cx_linked_list *) list, index); iter.elem_size = list->collection.elem_size; iter.elem_count = list->collection.size; iter.base.valid = cx_ll_iter_valid; iter.base.current = cx_ll_iter_current; iter.base.next = backwards ? cx_ll_iter_prev : cx_ll_iter_next; - iter.base.mutating = false; + iter.base.allow_remove = true; iter.base.remove = false; return iter; } @@ -1200,8 +1198,8 @@ const void *elem, int prepend ) { - struct cx_list_s *list = iter->src_handle.m; - cx_linked_list *ll = iter->src_handle.m; + struct cx_list_s *list = iter->src_handle; + cx_linked_list *ll = iter->src_handle; void *node = iter->elem_handle; if (node != NULL) { assert(prepend >= 0 && prepend <= 1);