ns_test.go | 14 +------------- r.go | 8 +++++++- diff --git a/ns_test.go b/ns_test.go index 23b9414d4e6ce43992c29d6e7d8155f2071b3836b144cfc0827cbe22ab9a42a6..86429f79cc6569f6c6951794d7b74264a4a9df1bc3398c300efea2b4c09d21a3 100644 --- a/ns_test.go +++ b/ns_test.go @@ -107,19 +107,7 @@ data := make([]byte, 1<<10) b = bytes.NewBufferString("0:foobar,") r = NewReader(b) - if _, err := r.Next(); err != nil { - t.FailNow() - } - if _, err := r.Read(data); err == nil { - t.FailNow() - } - - b = bytes.NewBufferString("0:foobar") - r = NewReader(b) - if _, err := r.Next(); err != nil { - t.FailNow() - } - if _, err := r.Read(data); err == nil { + if _, err := r.Next(); err == nil { t.FailNow() } diff --git a/r.go b/r.go index e3a0ea2899670612cf747fa938db5e441152ccc6983b7c34ed4bbd6c84c3482e..506c2f7e51ebfacf743438b85de336df717952574dc190cfb44232400bcc5064 100644 --- a/r.go +++ b/r.go @@ -58,7 +58,13 @@ return 0, fmt.Errorf("netstring header: %w", err) } r.left = size r.eof = false - return size, nil + if r.left == 0 { + err = r.checkTerminator() + if err == nil { + r.eof = true + } + } + return size, err } func (r *Reader) checkTerminator() error {