diff options
author | Ondřej Surý <ondrej@sury.org> | 2011-02-18 09:50:58 +0100 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2011-02-18 09:50:58 +0100 |
commit | c072558b90f1bbedc2022b0f30c8b1ac4712538e (patch) | |
tree | 67767591619e4bd8111fb05fac185cde94fb7378 /src/pkg/bytes/buffer.go | |
parent | 5859517b767c99749a45651c15d4bae5520ebae8 (diff) | |
download | golang-c072558b90f1bbedc2022b0f30c8b1ac4712538e.tar.gz |
Imported Upstream version 2011.02.15upstream/2011.02.15
Diffstat (limited to 'src/pkg/bytes/buffer.go')
-rw-r--r-- | src/pkg/bytes/buffer.go | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/pkg/bytes/buffer.go b/src/pkg/bytes/buffer.go index 4aa74371f..1acd4e05c 100644 --- a/src/pkg/bytes/buffer.go +++ b/src/pkg/bytes/buffer.go @@ -154,17 +154,20 @@ func (b *Buffer) ReadFrom(r io.Reader) (n int64, err os.Error) { } // WriteTo writes data to w until the buffer is drained or an error -// occurs. The return value n is the number of bytes written. +// occurs. The return value n is the number of bytes written; it always +// fits into an int, but it is int64 to match the io.WriterTo interface. // Any error encountered during the write is also returned. func (b *Buffer) WriteTo(w io.Writer) (n int64, err os.Error) { b.lastRead = opInvalid - for b.off < len(b.buf) { + if b.off < len(b.buf) { m, e := w.Write(b.buf[b.off:]) - n += int64(m) b.off += m + n = int64(m) if e != nil { return n, e } + // otherwise all bytes were written, by definition of + // Write method in io.Writer } // Buffer is now empty; reset. b.Truncate(0) @@ -309,13 +312,14 @@ func (b *Buffer) UnreadByte() os.Error { // delim. func (b *Buffer) ReadBytes(delim byte) (line []byte, err os.Error) { i := IndexByte(b.buf[b.off:], delim) - size := i + 1 - b.off + size := i + 1 if i < 0 { size = len(b.buf) - b.off err = os.EOF } line = make([]byte, size) copy(line, b.buf[b.off:]) + b.off += size return } |