comp-filter: Don't re-visit node while applying filters to diff nodes
authorDodji Seketeli <dodji@redhat.com>
Wed, 15 Feb 2023 14:53:02 +0000 (15:53 +0100)
committerDodji Seketeli <dodji@redhat.com>
Thu, 2 Mar 2023 17:31:43 +0000 (18:31 +0100)
When applying a filter to a corpus_diff node, visit each diff node
only once.  This can have some serious performance impact when there
are a lot of diff nodes to visit.

* src/abg-comp-filter.cc (apply_filter): In the overload for
corpus_diff, visit each diff node only once.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
src/abg-comp-filter.cc

index 83c406cf381ec10aa191f06612a427bd5b07af9f..5300d07c5938bb9c47d83a8c68bb65a5c8df6962 100644 (file)
@@ -41,7 +41,7 @@ void
 apply_filter(filter_base& filter, corpus_diff_sptr d)
 {
   bool s = d->context()->visiting_a_node_twice_is_forbidden();
-  d->context()->forbid_visiting_a_node_twice(false);
+  d->context()->forbid_visiting_a_node_twice(true);
   d->traverse(filter);
   d->context()->forbid_visiting_a_node_twice(s);
 }