R=rsc
DELTA=7 (5 added, 0 deleted, 2 changed)
OCL=30657
CL=30659
}
// 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);
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.