diff --git a/src/cpp/ripple/ripple_SHAMapSync.cpp b/src/cpp/ripple/ripple_SHAMapSync.cpp index a753a5e117..a2eebd5f63 100644 --- a/src/cpp/ripple/ripple_SHAMapSync.cpp +++ b/src/cpp/ripple/ripple_SHAMapSync.cpp @@ -311,7 +311,8 @@ SHAMapAddNode SHAMap::addKnownNode (const SHAMapNode& node, Blob const& rawNode, if (checkCacheNode (node)) // Do we already have this node? return SHAMapAddNode::okay (); - SHAMapTreeNode* iNode = root.get (); + SHAMapTreeNode::pointer parent = checkCacheNode(node.getParentNodeID()); + SHAMapTreeNode* iNode = parent ? parent.get() : root.get (); while (!iNode->isLeaf () && !iNode->isFullBelow () && (iNode->getDepth () < node.getDepth ())) {