mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-25 22:26:42 +00:00
accounts/abi: Index output for slices and arrays correctly
This commit is contained in:
parent
f3228592f5
commit
1c0116ae6c
1 changed files with 8 additions and 1 deletions
|
|
@ -274,12 +274,19 @@ func (abi ABI) Unpack(v interface{}, name string, output []byte) error {
|
|||
// struct will match named return values to the struct's field
|
||||
// names
|
||||
case reflect.Struct:
|
||||
idx := 0
|
||||
for i := 0; i < len(method.Outputs); i++ {
|
||||
marshalledValue, err := toGoType(i, method.Outputs[i], output)
|
||||
marshalledValue, err := toGoType(idx, method.Outputs[i], output)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
reflectValue := reflect.ValueOf(marshalledValue)
|
||||
switch reflectValue.Type().Kind() {
|
||||
case reflect.Slice, reflect.Array:
|
||||
idx += reflectValue.Len()
|
||||
default:
|
||||
idx++
|
||||
}
|
||||
|
||||
for j := 0; j < typ.NumField(); j++ {
|
||||
field := typ.Field(j)
|
||||
|
|
|
|||
Loading…
Reference in a new issue