From b8cc21eb3cc2d2b251b194ba44ffa518a4a2af5a Mon Sep 17 00:00:00 2001 From: beder Date: Mon, 12 Sep 2011 13:25:41 -0500 Subject: [PATCH] Fixed new API node key/value insertion in NodeBuilder (it was using the wrong condition on when it had added a key already) --- src/node/nodebuilder.cpp | 10 ++++++---- src/node/nodebuilder.h | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/node/nodebuilder.cpp b/src/node/nodebuilder.cpp index b27f760..27301b6 100644 --- a/src/node/nodebuilder.cpp +++ b/src/node/nodebuilder.cpp @@ -86,7 +86,7 @@ namespace YAML RegisterAnchor(anchor, node); if(needsKey) - m_keys.push_back(&node); + m_keys.push_back(Key(&node, false)); return node; } @@ -108,10 +108,12 @@ namespace YAML if(collection.type() == NodeType::Sequence) { collection.append(node, m_pMemory); } else if(collection.type() == NodeType::Map) { - detail::node& key = *m_keys.back(); - if(&key != &node) { + Key& key = m_keys.back(); + if(key.second) { + collection.insert(*key.first, node, m_pMemory); m_keys.pop_back(); - collection.insert(key, node, m_pMemory); + } else { + key.second = true; } } else { assert(false); diff --git a/src/node/nodebuilder.h b/src/node/nodebuilder.h index c28489e..3f9c209 100644 --- a/src/node/nodebuilder.h +++ b/src/node/nodebuilder.h @@ -47,7 +47,8 @@ namespace YAML Nodes m_stack; Nodes m_anchors; - Nodes m_keys; + typedef std::pair Key; + std::vector m_keys; std::size_t m_mapDepth; }; }