From f87ead88042c45a89912905c922869c6650c6abb Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Tue, 26 Aug 2014 23:26:49 -0400 Subject: [PATCH] Parser - Fixed bug where ::findAttribute and ::findAttributeModifier were scanning all nodes, but thinking that '--' was a tag, not a raw value. --- src/Parser.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Parser.cpp b/src/Parser.cpp index 1a73bae97..182296e6c 100644 --- a/src/Parser.cpp +++ b/src/Parser.cpp @@ -969,7 +969,7 @@ void Parser::findAttribute () for (i = nodes.begin (); i != nodes.end (); ++i) { std::string raw = (*i)->attribute ("raw"); - if ((*i)->hasTag ("--")) + if (raw == "--") break; if (! (*i)->hasTag ("?")) @@ -1066,11 +1066,17 @@ void Parser::findAttributeModifier () action = false; std::vector nodes; - collect (nodes); + collect (nodes, collectAll); std::vector ::iterator i; for (i = nodes.begin (); i != nodes.end (); ++i) { std::string raw = (*i)->attribute ("raw"); + if (raw == "--") + break; + + if (! (*i)->hasTag ("?")) + continue; + Nibbler n (raw); std::string name; @@ -1280,7 +1286,6 @@ void Parser::findIdSequence () for (i = nodes.begin (); i != nodes.end (); ++i) { std::string raw = (*i)->attribute ("raw"); - if (raw == "--") break; @@ -1449,7 +1454,6 @@ void Parser::findUUIDList () for (i = nodes.begin (); i != nodes.end (); ++i) { std::string raw = (*i)->attribute ("raw"); - if (raw == "--") break;