Merge pull request #2235 from nspcc-dev/mpt/empty-batch

core: handle empty MPT batch properly
This commit is contained in:
Roman Khimov 2021-10-27 19:14:39 +03:00 committed by GitHub
commit ec47491d4d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 0 deletions

View file

@ -43,6 +43,9 @@ func (b *Batch) Add(key []byte, value []byte) {
// and won't strip the resulting branch node. // and won't strip the resulting branch node.
// However it is used mostly after the block processing to update MPT and error is not expected. // However it is used mostly after the block processing to update MPT and error is not expected.
func (t *Trie) PutBatch(b Batch) (int, error) { func (t *Trie) PutBatch(b Batch) (int, error) {
if len(b.kv) == 0 {
return 0, nil
}
r, n, err := t.putBatch(b.kv) r, n, err := t.putBatch(b.kv)
t.root = r t.root = r
return n, err return n, err

View file

@ -329,6 +329,8 @@ func TestTrie_PutBatch(t *testing.T) {
ps = pairs{[2][]byte{{4}, nil}} ps = pairs{[2][]byte{{4}, nil}}
testPut(t, ps, tr1, tr2) testPut(t, ps, tr1, tr2)
testPut(t, pairs{}, tr1, tr2)
} }
var _ = printNode var _ = printNode