accounts/abi: added dst.CanSet checks

This commit is contained in:
Marius van der Wijden 2020-05-13 12:12:01 +02:00
parent 3f6a41a22d
commit 1df389d5f7

View file

@ -17,6 +17,7 @@
package abi package abi
import ( import (
"errors"
"fmt" "fmt"
"math/big" "math/big"
"reflect" "reflect"
@ -110,9 +111,12 @@ func setSlice(dst, src reflect.Value) error {
} }
} }
} }
if dst.CanSet() {
dst.Set(slice) dst.Set(slice)
return nil return nil
} }
return errors.New("Cannot set slice, destination not settable")
}
func setArray(dst, src reflect.Value) error { func setArray(dst, src reflect.Value) error {
array := reflect.New(dst.Type()).Elem() array := reflect.New(dst.Type()).Elem()
@ -125,9 +129,12 @@ func setArray(dst, src reflect.Value) error {
return err return err
} }
} }
if dst.CanSet() {
dst.Set(array) dst.Set(array)
return nil return nil
} }
return errors.New("Cannot set array, destination not settable")
}
func setStruct(dst, src reflect.Value) error { func setStruct(dst, src reflect.Value) error {
for i := 0; i < src.NumField(); i++ { for i := 0; i < src.NumField(); i++ {