fix(trie): filter out removed nodes on extend (#10433)

This commit is contained in:
Roman Krasiuk
2024-08-21 22:22:55 -07:00
committed by GitHub
parent 82f41c55a2
commit f4255216c7

View File

@@ -36,6 +36,7 @@ impl TrieUpdates {
/// Extends the trie updates.
pub fn extend(&mut self, other: Self) {
self.account_nodes.retain(|nibbles, _| !other.removed_nodes.contains(nibbles));
self.account_nodes.extend(ExcludeEmptyFromPair::from_iter(other.account_nodes));
self.removed_nodes.extend(ExcludeEmpty::from_iter(other.removed_nodes));
for (hashed_address, storage_trie) in other.storage_tries {
@@ -157,6 +158,7 @@ impl StorageTrieUpdates {
self.removed_nodes.clear();
}
self.is_deleted |= other.is_deleted;
self.storage_nodes.retain(|nibbles, _| !other.removed_nodes.contains(nibbles));
self.storage_nodes.extend(ExcludeEmptyFromPair::from_iter(other.storage_nodes));
self.removed_nodes.extend(ExcludeEmpty::from_iter(other.removed_nodes));
}