From 67caf59c7399659a7de273c175134eac88e777ac Mon Sep 17 00:00:00 2001 From: Matt Armstrong Date: Tue, 8 Nov 2022 15:08:00 -0800 Subject: [PATCH 2/2] Simplify ITREE_FOREACH * src/itree.c (itree_iterator_next): Call itree_iterator_finish if returning NULL. * src/itree.h (ITREE_FOREACH): Don't call itree_iterator_finish. --- src/itree.c | 3 +++ src/itree.h | 7 +++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/itree.c b/src/itree.c index 989173db4e5..74199db3e42 100644 --- a/src/itree.c +++ b/src/itree.c @@ -1431,6 +1431,9 @@ itree_iterator_next (struct itree_iterator *g) after it was pushed: Check if it still intersects. */ } while (node && ! interval_node_intersects (node, g->begin, g->end)); + if (!node) + itree_iterator_finish(g); + return node; } diff --git a/src/itree.h b/src/itree.h index d6c6fb10591..67e258dd832 100644 --- a/src/itree.h +++ b/src/itree.h @@ -179,10 +179,9 @@ #define ITREE_FOREACH(n, t, beg, end, order) \ { } \ else \ for (struct itree_iterator *itree_iter_ \ - = itree_iterator_start (t, beg, end, ITREE_##order, \ - __FILE__, __LINE__); \ - ((n = itree_iterator_next (itree_iter_)) \ - || (itree_iterator_finish (itree_iter_), false));) + = itree_iterator_start (t, beg, end, ITREE_##order, \ + __FILE__, __LINE__); \ + (n = itree_iterator_next (itree_iter_));) #define ITREE_FOREACH_ABORT() \ itree_iterator_finish (itree_iter_) -- 2.35.1