This commit is contained in:
Jakob Borg 2017-04-21 04:21:04 +00:00 committed by GitHub
commit e570761d41

View file

@ -304,12 +304,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)