]> Cypherpunks.ru repositories - netstring.git/commitdiff
Do not require explicit Read for zero length v2.5.0
authorSergey Matveev <stargrave@stargrave.org>
Mon, 3 Jul 2023 15:39:02 +0000 (18:39 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Mon, 3 Jul 2023 15:39:02 +0000 (18:39 +0300)
ns_test.go
r.go

index c3a138a1ad53926ff0303a989dc2a15a75e77eec..97e8deb2aac886d0c3aa1e4d1b31462a6ef34741 100644 (file)
@@ -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 9b8f51069e541d86986497e383dec57349f563b8..098ee49be485cb37a10e420c5fce7c03c6405a5d 100644 (file)
--- 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 {