diff --git a/crates/common/trie/nibbles.rs b/crates/common/trie/nibbles.rs index 6d17e488519..f77eaef2b47 100644 --- a/crates/common/trie/nibbles.rs +++ b/crates/common/trie/nibbles.rs @@ -93,9 +93,10 @@ impl Nibbles { /// If `prefix` is a prefix of self, move the offset after /// the prefix and return true, otherwise return false. pub fn skip_prefix(&mut self, prefix: &Nibbles) -> bool { - if self.len() >= prefix.len() && &self.data[..prefix.len()] == prefix.as_ref() { - self.data = self.data[prefix.len()..].to_vec(); - self.already_consumed.extend(&prefix.data); + let plen = prefix.len(); + if self.len() >= plen && &self.data[..plen] == prefix.as_ref() { + let consumed: Vec = self.data.drain(..plen).collect(); + self.already_consumed.extend(consumed); true } else { false diff --git a/crates/common/trie/node/extension.rs b/crates/common/trie/node/extension.rs index 74d55719eb9..3aebf4e7ad1 100644 --- a/crates/common/trie/node/extension.rs +++ b/crates/common/trie/node/extension.rs @@ -228,7 +228,7 @@ impl ExtensionNode { let child_node = self.child.get_node(db, path.current())?.ok_or_else(|| { TrieError::InconsistentTree(Box::new( InconsistentTreeError::ExtensionNodeChildNotFound(ExtensionNodeErrorData { - node_hash: self.child.clone().compute_hash().finalize(), + node_hash: self.child.compute_hash().finalize(), extension_node_hash: self.compute_hash().finalize(), extension_node_prefix: self.prefix.clone(), node_path: path.current(),