forked from OSchip/llvm-project
YAML: Fix crash in the skip method of KeyValueNode class.
This commit changes the 'skip' method in the 'KeyValueNode' class to ensure that it doesn't dereference a null pointer when calling the 'skip' method of its value child node. It also adds a unittest that ensures that the crash doesn't occur. This change is motivated by a patch that implements parsing of YAML block scalars (http://reviews.llvm.org/D9503), as one of the unittests in that patch triggered this problem. llvm-svn: 236669
This commit is contained in:
parent
2777d88745
commit
74b63ebd53
|
@ -253,7 +253,8 @@ public:
|
|||
|
||||
void skip() override {
|
||||
getKey()->skip();
|
||||
getValue()->skip();
|
||||
if (Node *Val = getValue())
|
||||
Val->skip();
|
||||
}
|
||||
|
||||
static inline bool classof(const Node *N) {
|
||||
|
|
|
@ -141,6 +141,10 @@ TEST(YAMLParser, HandlesEndOfFileGracefully) {
|
|||
ExpectParseError("In object hitting EOF", "{\"\"");
|
||||
}
|
||||
|
||||
TEST(YAMLParser, HandlesNullValuesInKeyValueNodesGracefully) {
|
||||
ExpectParseError("KeyValueNode with null value", "test: '");
|
||||
}
|
||||
|
||||
// Checks that the given string can be parsed into an identical string inside
|
||||
// of an array.
|
||||
static void ExpectCanParseString(StringRef String) {
|
||||
|
|
Loading…
Reference in New Issue