From 9b92a9d5fbd9333bb1e3c79ba6ba6f6b479fe930 Mon Sep 17 00:00:00 2001 From: Sean Bowe Date: Thu, 21 Apr 2016 12:02:43 -0600 Subject: [PATCH] Make appending algorithm more succinct. --- src/zcash/IncrementalMerkleTree.cpp | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/zcash/IncrementalMerkleTree.cpp b/src/zcash/IncrementalMerkleTree.cpp index 0a391486a..c47862d1f 100644 --- a/src/zcash/IncrementalMerkleTree.cpp +++ b/src/zcash/IncrementalMerkleTree.cpp @@ -93,22 +93,20 @@ void IncrementalMerkleTree::append(Hash obj) { left = obj; right = boost::none; - // Propagate up the tree as much as needed - BOOST_FOREACH(boost::optional& parent, parents) { - if (parent) { - combined = Hash::combine(*parent, *combined); - parent = boost::none; + for (size_t i = 0; i < Depth; i++) { + if (i < parents.size()) { + if (parents[i]) { + combined = Hash::combine(*parents[i], *combined); + parents[i] = boost::none; + } else { + parents[i] = *combined; + break; + } } else { - parent = *combined; - combined = boost::none; + parents.push_back(combined); break; } } - - if (combined) { - // Create a new parent - parents.push_back(combined); - } } }