From 71b61a633d42a488ef633d072c72921a76cd98e9 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Tue, 8 May 2012 19:52:57 -0700 Subject: [PATCH] Bugfix. In edge cases (such as a tree no inner nodes), walkTo could return a node that shouldn't be returned. --- src/SHAMap.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SHAMap.cpp b/src/SHAMap.cpp index b7f94cfa9..1779d5f32 100644 --- a/src/SHAMap.cpp +++ b/src/SHAMap.cpp @@ -87,8 +87,7 @@ SHAMapTreeNode::pointer SHAMap::checkCacheNode(const SHAMapNode& iNode) SHAMapTreeNode::pointer SHAMap::walkTo(const uint256& id, bool modify) { // walk down to the terminal node for this ID - - SHAMapTreeNode::pointer inNode=root; + SHAMapTreeNode::pointer inNode = root; while (!inNode->isLeaf()) { @@ -101,6 +100,7 @@ SHAMapTreeNode::pointer SHAMap::walkTo(const uint256& id, bool modify) if (!nextNode) throw SHAMapException(MissingNode); inNode = nextNode; } + if (inNode->getTag() != id) return SHAMapTreeNode::pointer(); if (modify) returnNode(inNode, true); return inNode; }