diff options
author | croath <croathliu@gmail.com> | 2017-12-29 19:46:40 +0800 |
---|---|---|
committer | croath <croathliu@gmail.com> | 2017-12-29 19:56:23 +0800 |
commit | e7cd627d93d43ff52d13c66b336e12b96d9bfdef (patch) | |
tree | 0970330eb8cea0f635f5b6c163d34a0a3b34ee7a | |
parent | f7ca03ae875c7c78191bf38f6ce1cc4bbe5361c6 (diff) | |
download | dexon-e7cd627d93d43ff52d13c66b336e12b96d9bfdef.tar.gz dexon-e7cd627d93d43ff52d13c66b336e12b96d9bfdef.tar.zst dexon-e7cd627d93d43ff52d13c66b336e12b96d9bfdef.zip |
accounts/abi: fix for one output interface crashing
-rw-r--r-- | accounts/abi/argument.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/accounts/abi/argument.go b/accounts/abi/argument.go index ad17fbf2b..65f79c9d4 100644 --- a/accounts/abi/argument.go +++ b/accounts/abi/argument.go @@ -169,6 +169,16 @@ func (arguments Arguments) unpackAtomic(v interface{}, output []byte) error { if err != nil { return err } + + // if we reach this part, there is only one output member from the contract event. + // for mobile, the result type is always a slice. + if reflect.Slice == value.Kind() && value.Len() >= 1 { + //check if it's not a byte slice + if reflect.TypeOf([]byte{}) != value.Type() { + value = value.Index(0).Elem() + } + } + return set(value, reflect.ValueOf(marshalledValue), arg) } |