Commit 32db5716 authored by Felix Lange's avatar Felix Lange

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.
parent f9be9a23
......@@ -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.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment