From 4a07f4e54616f5501e434ec7da1a5f7a3997ff62 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Fri, 22 Aug 2014 23:52:24 -0400 Subject: [PATCH] Parser - ::findModifications moves branch pruning out of the iterated loop. --- src/Parser.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Parser.cpp b/src/Parser.cpp index 4ab8b18c3..2c5ec1786 100644 --- a/src/Parser.cpp +++ b/src/Parser.cpp @@ -1583,9 +1583,9 @@ void Parser::findFilter () void Parser::findModifications () { context.debug ("Parser::findModifications"); - bool action = false; bool after_writecmd = false; + std::vector prune; std::vector nodes; collect (nodes, collectAll); std::vector ::iterator i; @@ -1604,12 +1604,16 @@ void Parser::findModifications () { (*i)->unTag ("?"); (*i)->tag ("MODIFICATION"); - (*i)->removeAllBranches (); - action = true; +// (*i)->removeAllBranches (); + prune.push_back (*i); } } - if (action) + // Prune branches outside the loop. + for (i = prune.begin (); i != prune.end (); ++i) + (*i)->removeAllBranches (); + + if (prune.size ()) context.debug (_tree->dump ()); }