diff options
author | Felix Lange <fjl@twurst.com> | 2017-05-02 19:42:55 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2017-05-02 19:42:55 +0800 |
commit | 32db5716816ef6fddb0d943fc0083c89127e8533 (patch) | |
tree | 439e02ad1e42ae0a20193cb006742d01fc443a8e /console | |
parent | f9be9a2302dd73fe3cc792167d65f24c7b7d35c4 (diff) | |
download | dexon-32db5716816ef6fddb0d943fc0083c89127e8533.tar.gz dexon-32db5716816ef6fddb0d943fc0083c89127e8533.tar.zst dexon-32db5716816ef6fddb0d943fc0083c89127e8533.zip |
console: avoid float64 when remarshaling parameters
With Go 1.7, encoding/json marshals float64 using scientific
notation ("10e+6"), but Go's int and *big.Int decoders don't accept such
numbers. This change disables use of float64 to avoid the problem.
Diffstat (limited to 'console')
-rw-r--r-- | console/bridge.go | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/console/bridge.go b/console/bridge.go index 6db54eb21..75be68188 100644 --- a/console/bridge.go +++ b/console/bridge.go @@ -20,6 +20,7 @@ import ( "encoding/json" "fmt" "io" + "strings" "time" "github.com/ethereum/go-ethereum/log" @@ -240,17 +241,19 @@ func (b *bridge) Send(call otto.FunctionCall) (response otto.Value) { throwJSException(err.Error()) } var ( - rawReq = []byte(reqVal.String()) + rawReq = reqVal.String() + dec = json.NewDecoder(strings.NewReader(rawReq)) reqs []jsonrpcCall batch bool ) + dec.UseNumber() // avoid float64s if rawReq[0] == '[' { batch = true - json.Unmarshal(rawReq, &reqs) + dec.Decode(&reqs) } else { batch = false reqs = make([]jsonrpcCall, 1) - json.Unmarshal(rawReq, &reqs[0]) + dec.Decode(&reqs[0]) } // Execute the requests. |