forked from cerc-io/plugeth
Merge pull request #19182 from karalabe/fix-legacy-receipt-decoding
core/types: fix receipt legacy decoding
This commit is contained in:
commit
0f41356b95
@ -115,8 +115,12 @@ func (l *LogForStorage) EncodeRLP(w io.Writer) error {
|
||||
//
|
||||
// Note some redundant fields(e.g. block number, tx hash etc) will be assembled later.
|
||||
func (l *LogForStorage) DecodeRLP(s *rlp.Stream) error {
|
||||
blob, err := s.Raw()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var dec rlpStorageLog
|
||||
err := s.Decode(&dec)
|
||||
err = rlp.DecodeBytes(blob, &dec)
|
||||
if err == nil {
|
||||
*l = LogForStorage{
|
||||
Address: dec.Address,
|
||||
@ -126,7 +130,7 @@ func (l *LogForStorage) DecodeRLP(s *rlp.Stream) error {
|
||||
} else {
|
||||
// Try to decode log with previous definition.
|
||||
var dec LegacyRlpStorageLog
|
||||
err = s.Decode(&dec)
|
||||
err = rlp.DecodeBytes(blob, &dec)
|
||||
if err == nil {
|
||||
*l = LogForStorage{
|
||||
Address: dec.Address,
|
||||
|
@ -184,10 +184,14 @@ func (r *ReceiptForStorage) EncodeRLP(w io.Writer) error {
|
||||
// DecodeRLP implements rlp.Decoder, and loads both consensus and implementation
|
||||
// fields of a receipt from an RLP stream.
|
||||
func (r *ReceiptForStorage) DecodeRLP(s *rlp.Stream) error {
|
||||
blob, err := s.Raw()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var dec receiptStorageRLP
|
||||
if err := s.Decode(&dec); err != nil {
|
||||
if err := rlp.DecodeBytes(blob, &dec); err != nil {
|
||||
var sdec LegacyReceiptStorageRLP
|
||||
if err := s.Decode(&sdec); err != nil {
|
||||
if err := rlp.DecodeBytes(blob, &sdec); err != nil {
|
||||
return err
|
||||
}
|
||||
dec.PostStateOrStatus = common.CopyBytes(sdec.PostStateOrStatus)
|
||||
|
Loading…
Reference in New Issue
Block a user