From: Sergey Matveev Date: Mon, 3 Jul 2023 15:39:02 +0000 (+0300) Subject: Do not require explicit Read for zero length X-Git-Tag: v2.5.0^0 X-Git-Url: http://www.git.cypherpunks.ru/?p=netstring.git;a=commitdiff_plain;h=8fa6c4b0000e2dc27fce9220db1a5eb8bf468e81 Do not require explicit Read for zero length --- diff --git a/ns_test.go b/ns_test.go index c3a138a..97e8deb 100644 --- a/ns_test.go +++ b/ns_test.go @@ -107,19 +107,7 @@ func TestErrors(t *testing.T) { 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 9b8f510..098ee49 100644 --- a/r.go +++ b/r.go @@ -58,7 +58,13 @@ func (r *Reader) Next() (uint64, error) { } 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 {