From c9460110e072df84b7dee3eb651f2ec5df75fb18 Mon Sep 17 00:00:00 2001 From: Jesse Beder Date: Mon, 20 Jan 2020 18:05:15 -0600 Subject: [PATCH] Fix reading empty token stack with a node with properties but no scalar. E.g. `!2`. --- src/singledocparser.cpp | 6 ++++++ test/integration/load_node_test.cpp | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/src/singledocparser.cpp b/src/singledocparser.cpp index 52544dd6..47e9e047 100644 --- a/src/singledocparser.cpp +++ b/src/singledocparser.cpp @@ -79,6 +79,12 @@ void SingleDocParser::HandleNode(EventHandler& eventHandler) { if (!anchor_name.empty()) eventHandler.OnAnchor(mark, anchor_name); + // after parsing properties, an empty node is again a possibility + if (m_scanner.empty()) { + eventHandler.OnNull(mark, anchor); + return; + } + const Token& token = m_scanner.peek(); if (token.type == Token::PLAIN_SCALAR && IsNullString(token.value)) { diff --git a/test/integration/load_node_test.cpp b/test/integration/load_node_test.cpp index 4f4f28e8..0e0dd6bc 100644 --- a/test/integration/load_node_test.cpp +++ b/test/integration/load_node_test.cpp @@ -257,5 +257,10 @@ TEST(NodeTest, LoadTagWithParenthesis) { EXPECT_EQ(node.as(), "foo"); } +TEST(NodeTest, LoadTagWithNullScalar) { + Node node = Load("!2"); + EXPECT_TRUE(node.IsNull()); +} + } // namespace } // namespace YAML