mirror of
https://github.com/json-iterator/go.git
synced 2025-05-22 22:00:15 +02:00
fix read int
This commit is contained in:
parent
6880076b44
commit
2922666717
@ -16,7 +16,7 @@ func Unmarshal(data []byte, v interface{}) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if iter.Error == nil {
|
if iter.Error == nil {
|
||||||
iter.reportError("UnmarshalAny", "there are bytes left after unmarshal")
|
iter.reportError("Unmarshal", "there are bytes left after unmarshal")
|
||||||
}
|
}
|
||||||
return iter.Error
|
return iter.Error
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package jsoniter
|
package jsoniter
|
||||||
|
|
||||||
import "strconv"
|
import (
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
var intDigits []int8
|
var intDigits []int8
|
||||||
|
|
||||||
@ -124,6 +126,7 @@ func (iter *Iterator) readUint32(c byte) (ret uint32) {
|
|||||||
for i := iter.head; i < iter.tail; i++ {
|
for i := iter.head; i < iter.tail; i++ {
|
||||||
ind = intDigits[iter.buf[i]]
|
ind = intDigits[iter.buf[i]]
|
||||||
if ind == invalidCharForNumber {
|
if ind == invalidCharForNumber {
|
||||||
|
iter.head = i
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
if value > uint32SafeToMultiply10 {
|
if value > uint32SafeToMultiply10 {
|
||||||
@ -181,6 +184,7 @@ func (iter *Iterator) readUint64(c byte) (ret uint64) {
|
|||||||
for i := iter.head; i < iter.tail; i++ {
|
for i := iter.head; i < iter.tail; i++ {
|
||||||
ind = intDigits[iter.buf[i]]
|
ind = intDigits[iter.buf[i]]
|
||||||
if ind == invalidCharForNumber {
|
if ind == invalidCharForNumber {
|
||||||
|
iter.head = i
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
if value > uint64SafeToMultiple10 {
|
if value > uint64SafeToMultiple10 {
|
||||||
|
@ -17,6 +17,10 @@ func NewStream(out io.Writer, bufSize int) *Stream {
|
|||||||
return &Stream{out, make([]byte, bufSize), 0, nil, 0, 0}
|
return &Stream{out, make([]byte, bufSize), 0, nil, 0, 0}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *Stream) Reset(out io.Writer) {
|
||||||
|
b.out = out
|
||||||
|
b.n = 0
|
||||||
|
}
|
||||||
|
|
||||||
// Available returns how many bytes are unused in the buffer.
|
// Available returns how many bytes are unused in the buffer.
|
||||||
func (b *Stream) Available() int {
|
func (b *Stream) Available() int {
|
||||||
|
@ -64,6 +64,22 @@ func Test_read_int32(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_read_int32_array(t *testing.T) {
|
||||||
|
should := require.New(t)
|
||||||
|
input := `[123,456,789]`
|
||||||
|
val := make([]int32, 0)
|
||||||
|
UnmarshalFromString(input, &val)
|
||||||
|
should.Equal(3, len(val))
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_read_int64_array(t *testing.T) {
|
||||||
|
should := require.New(t)
|
||||||
|
input := `[123,456,789]`
|
||||||
|
val := make([]int64, 0)
|
||||||
|
UnmarshalFromString(input, &val)
|
||||||
|
should.Equal(3, len(val))
|
||||||
|
}
|
||||||
|
|
||||||
func Test_read_int32_overflow(t *testing.T) {
|
func Test_read_int32_overflow(t *testing.T) {
|
||||||
should := require.New(t)
|
should := require.New(t)
|
||||||
input := "123456789123456789,"
|
input := "123456789123456789,"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user