From 0815fe38bb83098e2edae1625765e3189eeee61d Mon Sep 17 00:00:00 2001 From: tdakkota Date: Tue, 22 Feb 2022 15:15:41 +0300 Subject: [PATCH] fix: do not unread, if next was failed --- dec_read.go | 6 ++++-- dec_read_test.go | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/dec_read.go b/dec_read.go index 5d7488e..c9e0a00 100644 --- a/dec_read.go +++ b/dec_read.go @@ -7,8 +7,10 @@ import ( // Next gets Type of relatively next json element func (d *Decoder) Next() Type { - v, _ := d.next() - d.unread() + v, err := d.next() + if err == nil { + d.unread() + } return types[v] } diff --git a/dec_read_test.go b/dec_read_test.go index 6db03e4..0fc94c5 100644 --- a/dec_read_test.go +++ b/dec_read_test.go @@ -1,6 +1,7 @@ package jx import ( + "io" "strings" "testing" @@ -19,3 +20,13 @@ func TestDecoder_consume(t *testing.T) { d := Decode(r, 1) require.ErrorIs(t, d.consume('"'), r.Err()) } + +func TestDecoder_Next(t *testing.T) { + d := DecodeBytes(nil) + d.Next() + d.Next() + d.Next() + + _, err := d.Str() + require.ErrorIs(t, err, io.ErrUnexpectedEOF) +}