src/tree.c

changeset 893
0a2b328f5b91
parent 890
54565fd74e74
--- a/src/tree.c	Sun Sep 29 13:10:52 2024 +0200
+++ b/src/tree.c	Sun Sep 29 13:32:33 2024 +0200
@@ -541,6 +541,7 @@
 
 size_t cx_tree_add_iter(
         struct cx_iterator_base_s *iter,
+        size_t num,
         cx_tree_search_func sfunc,
         cx_tree_node_create_func cfunc,
         void *cdata,
@@ -562,7 +563,7 @@
     void *current_node = root;
     const void *elem;
 
-    for (void **eptr;
+    for (void **eptr; processed < num &&
          iter->valid(iter) && (eptr = iter->current(iter)) != NULL;
          iter->next(iter)) {
         elem = *eptr;
@@ -659,7 +660,7 @@
 
     // otherwise, create iterator and hand over to other function
     CxIterator iter = cxIterator(src, elem_size, num);
-    return cx_tree_add_iter(cxIteratorRef(iter), sfunc,
+    return cx_tree_add_iter(cxIteratorRef(iter), num, sfunc,
                             cfunc, cdata, failed, root,
                             loc_parent, loc_children, loc_last_child,
                             loc_prev, loc_next);

mercurial