From 4c77df11de1fabf455c453d0cc32db32d8a43920 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Fri, 26 Jun 2015 22:15:31 +0100 Subject: [PATCH] Fix Tag class test failures. --- src/backend/metadata/tag.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/backend/metadata/tag.h b/src/backend/metadata/tag.h index e9908d9c..2f6c07a7 100644 --- a/src/backend/metadata/tag.h +++ b/src/backend/metadata/tag.h @@ -52,7 +52,8 @@ namespace YAML { struct convert < loot::Tag > { static Node encode(const loot::Tag& rhs) { Node node; - node["condition"] = rhs.Condition(); + if (rhs.IsConditional()) + node["condition"] = rhs.Condition(); if (rhs.IsAddition()) node["name"] = rhs.Name(); else @@ -61,17 +62,19 @@ namespace YAML { } static bool decode(const Node& node, loot::Tag& rhs) { + if (!node.IsMap() && !node.IsScalar()) + return false; + std::string condition, tag; if (node.IsMap()) { if (!node["name"]) return false; + tag = node["name"].as(); if (node["condition"]) condition = node["condition"].as(); - if (node["name"]) - tag = node["name"].as(); } - else if (node.IsScalar()) + else tag = node.as(); if (tag[0] == '-')