accounts/abi: context info on unpack-errors (#28529)

adds contextual information to errors returned by unpack
This commit is contained in:
levisyin 2023-11-21 16:16:57 +08:00 committed by GitHub
parent ad16f11f84
commit 525db7b2c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -18,7 +18,6 @@ package abi
import ( import (
"bytes" "bytes"
"errors"
"fmt" "fmt"
"strings" "strings"
@ -84,10 +83,10 @@ func (e Error) String() string {
func (e *Error) Unpack(data []byte) (interface{}, error) { func (e *Error) Unpack(data []byte) (interface{}, error) {
if len(data) < 4 { if len(data) < 4 {
return "", errors.New("invalid data for unpacking") return "", fmt.Errorf("insufficient data for unpacking: have %d, want at least 4", len(data))
} }
if !bytes.Equal(data[:4], e.ID[:4]) { if !bytes.Equal(data[:4], e.ID[:4]) {
return "", errors.New("invalid data for unpacking") return "", fmt.Errorf("invalid identifier, have %#x want %#x", data[:4], e.ID[:4])
} }
return e.Inputs.Unpack(data[4:]) return e.Inputs.Unpack(data[4:])
} }