X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FSupport%2FYAMLTraits.cpp;h=526667fc59e7615bbb6bd7f54878a1942a658a40;hb=12af22e8cc217827cf4f118b0f5e4ebbda9925ae;hp=0bf9cf89088b543ebd5e0a6e67ad70941f6327da;hpb=4e2b922131ae617cb8738d1871e9d918c44bdb69;p=oota-llvm.git diff --git a/lib/Support/YAMLTraits.cpp b/lib/Support/YAMLTraits.cpp index 0bf9cf89088..526667fc59e 100644 --- a/lib/Support/YAMLTraits.cpp +++ b/lib/Support/YAMLTraits.cpp @@ -7,6 +7,7 @@ // //===----------------------------------------------------------------------===// +#include "llvm/Support/Errc.h" #include "llvm/Support/YAMLTraits.h" #include "llvm/ADT/Twine.h" #include "llvm/Support/Casting.h" @@ -72,7 +73,7 @@ bool Input::setCurrentDocument() { Node *N = DocIterator->getRoot(); if (!N) { assert(Strm->failed() && "Root is NULL iff parsing failed"); - EC = std::make_error_code(std::errc::invalid_argument); + EC = make_error_code(errc::invalid_argument); return false; } @@ -122,7 +123,7 @@ bool Input::preflightKey(const char *Key, bool Required, bool, bool &UseDefault, // nodes are present. if (!CurrentNode) { if (Required) - EC = std::make_error_code(std::errc::invalid_argument); + EC = make_error_code(errc::invalid_argument); return false; } @@ -298,7 +299,7 @@ void Input::setError(HNode *hnode, const Twine &message) { void Input::setError(Node *node, const Twine &message) { Strm->printError(node, message); - EC = std::make_error_code(std::errc::invalid_argument); + EC = make_error_code(errc::invalid_argument); } Input::HNode *Input::createHNodes(Node *N) { @@ -325,7 +326,12 @@ Input::HNode *Input::createHNodes(Node *N) { } else if (MappingNode *Map = dyn_cast(N)) { MapHNode *mapHNode = new MapHNode(N); for (KeyValueNode &KVN : *Map) { - ScalarNode *KeyScalar = dyn_cast(KVN.getKey()); + Node *KeyNode = KVN.getKey(); + ScalarNode *KeyScalar = dyn_cast(KeyNode); + if (!KeyScalar) { + setError(KeyNode, "Map key must be a scalar"); + break; + } StringStorage.clear(); StringRef KeyStr = KeyScalar->getValue(StringStorage); if (!StringStorage.empty()) {