forked from cerc-io/plugeth
Merge pull request #21003 from karalabe/snapshot-journal-nilfix
core/state/snapshot: fix journal nil deserialziation
This commit is contained in:
commit
3cebfb6664
@ -158,7 +158,11 @@ func loadDiffLayer(parent snapshot, r *rlp.Stream) (snapshot, error) {
|
||||
}
|
||||
accountData := make(map[common.Hash][]byte)
|
||||
for _, entry := range accounts {
|
||||
accountData[entry.Hash] = entry.Blob
|
||||
if len(entry.Blob) > 0 { // RLP loses nil-ness, but `[]byte{}` is not a valid item, so reinterpret that
|
||||
accountData[entry.Hash] = entry.Blob
|
||||
} else {
|
||||
accountData[entry.Hash] = nil
|
||||
}
|
||||
}
|
||||
var storage []journalStorage
|
||||
if err := r.Decode(&storage); err != nil {
|
||||
@ -168,7 +172,11 @@ func loadDiffLayer(parent snapshot, r *rlp.Stream) (snapshot, error) {
|
||||
for _, entry := range storage {
|
||||
slots := make(map[common.Hash][]byte)
|
||||
for i, key := range entry.Keys {
|
||||
slots[key] = entry.Vals[i]
|
||||
if len(entry.Vals[i]) > 0 { // RLP loses nil-ness, but `[]byte{}` is not a valid item, so reinterpret that
|
||||
slots[key] = entry.Vals[i]
|
||||
} else {
|
||||
slots[key] = nil
|
||||
}
|
||||
}
|
||||
storageData[entry.Hash] = slots
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user