diff --git a/src/backend/metadata/location.cpp b/src/backend/metadata/location.cpp index e9bd6bf0..523d1507 100644 --- a/src/backend/metadata/location.cpp +++ b/src/backend/metadata/location.cpp @@ -51,7 +51,7 @@ namespace loot { namespace YAML { Emitter& operator << (Emitter& out, const loot::Location& rhs) { if (rhs.Versions().empty()) - out << rhs.URL(); + out << YAML::SingleQuoted << rhs.URL(); else { out << BeginMap << Key << "link" << Value << YAML::SingleQuoted << rhs.URL() diff --git a/src/backend/metadata/location.h b/src/backend/metadata/location.h index 9fc408f8..25157261 100644 --- a/src/backend/metadata/location.h +++ b/src/backend/metadata/location.h @@ -59,6 +59,9 @@ namespace YAML { } static bool decode(const Node& node, loot::Location& rhs) { + if (!node.IsMap() && !node.IsScalar()) + return false; + std::string url; std::vector versions; @@ -66,12 +69,10 @@ namespace YAML { if (!node["link"] || !node["ver"]) return false; - if (node["link"]) - url = node["link"].as(); - if (node["ver"]) - versions = node["ver"].as>(); + url = node["link"].as(); + versions = node["ver"].as>(); } - else if (node.IsScalar()) + else url = node.as(); rhs = loot::Location(url, versions);