From 6555811ca5cfbaf3f280558b90c629aa699acdfc Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Mon, 26 Aug 2013 08:43:02 -0700 Subject: [PATCH] Bug - Fixed bug in DOM access where the attribute name was not being properly used for UUID-based lookup. --- src/DOM.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/DOM.cpp b/src/DOM.cpp index c6f8396a3..e99310108 100644 --- a/src/DOM.cpp +++ b/src/DOM.cpp @@ -179,6 +179,8 @@ const std::string DOM::get (const std::string& name) const std::string DOM::get (const std::string& name, const Task& task) { Nibbler n (name); + n.save (); + int id; std::string uuid; std::string canonical; @@ -189,7 +191,7 @@ const std::string DOM::get (const std::string& name, const Task& task) else if (A3::is_attribute (name, canonical)) return task.get (canonical); // . - else if (n.getInt (id)) + if (n.getInt (id)) { if (n.skip ('.')) { @@ -206,10 +208,12 @@ const std::string DOM::get (const std::string& name, const Task& task) else if (attr == "urgency") return format (ref.urgency_c ()); else if (A3::is_attribute (attr, canonical)) return ref.get (canonical); } + + n.restore (); } // . - else if (n.getUUID (uuid)) + if (n.getUUID (uuid)) { if (n.skip ('.')) { @@ -222,10 +226,12 @@ const std::string DOM::get (const std::string& name, const Task& task) std::string attr; n.getUntilEOS (attr); - if (name == "id") return format (ref.id); - else if (name == "urgency") return format (ref.urgency_c (), 4, 3); + if (attr == "id") return format (ref.id); + else if (attr == "urgency") return format (ref.urgency_c (), 4, 3); else if (A3::is_attribute (attr, canonical)) return ref.get (canonical); } + + n.restore (); } // Delegate to the context-free version of DOM::get.