]> Cypherpunks repositories - gostls13.git/commitdiff
fix io.Bytebuffer.Read for new EOF semantics
authorRob Pike <r@golang.org>
Tue, 23 Jun 2009 22:20:40 +0000 (15:20 -0700)
committerRob Pike <r@golang.org>
Tue, 23 Jun 2009 22:20:40 +0000 (15:20 -0700)
R=rsc
DELTA=7  (5 added, 0 deleted, 2 changed)
OCL=30657
CL=30659

src/pkg/io/bytebuffer.go

index 11c8a1a87d537f019f7bc96fa9bea6d0ebda7651..2c356192e193fafcc9f782cd9e90af2554dcdff2 100644 (file)
@@ -87,8 +87,13 @@ func (b *ByteBuffer) WriteByte(c byte) os.Error {
 }
 
 // Read reads the next len(p) bytes from the buffer or until the buffer
-// is drained.  The return value n is the number of bytes read; err is always nil.
+// is drained.  The return value n is the number of bytes read.  If the
+// buffer has no data to return, err is os.EOF even if len(p) is zero;
+// otherwise it is nil.
 func (b *ByteBuffer) Read(p []byte) (n int, err os.Error) {
+       if b.off >= len(b.buf) {
+               return 0, os.EOF
+       }
        m := b.Len();
        n = len(p);
 
@@ -99,7 +104,7 @@ func (b *ByteBuffer) Read(p []byte) (n int, err os.Error) {
 
        bytecopy(p, 0, b.buf, b.off, n);
        b.off += n;
-       return n, nil
+       return n, err
 }
 
 // ReadByte reads and returns the next byte from the buffer.