diff --git a/decode_test.go b/decode_test.go index 0c627c8..3820173 100644 --- a/decode_test.go +++ b/decode_test.go @@ -3878,3 +3878,14 @@ func Benchmark306(b *testing.B) { } }) } + +func TestIssue348(t *testing.T) { + in := strings.Repeat("["+strings.Repeat(",1000", 500)[1:]+"]", 2) + dec := json.NewDecoder(strings.NewReader(in)) + for dec.More() { + var foo interface{} + if err := dec.Decode(&foo); err != nil { + t.Error(err) + } + } +} diff --git a/internal/decoder/stream.go b/internal/decoder/stream.go index a33bec6..332d47d 100644 --- a/internal/decoder/stream.go +++ b/internal/decoder/stream.go @@ -103,7 +103,7 @@ func (s *Stream) statForRetry() ([]byte, int64, unsafe.Pointer) { func (s *Stream) Reset() { s.reset() - s.bufSize = initBufSize + s.bufSize = int64(len(s.buf)) } func (s *Stream) More() bool {