mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
bytes.Buffer: return error in WriteTo if buffer is not drained
R=rsc CC=golang-dev https://golang.org/cl/5642065
This commit is contained in:
parent
3fce00d99e
commit
c59dc485cd
1 changed files with 8 additions and 1 deletions
|
|
@ -182,14 +182,21 @@ func makeSlice(n int) []byte {
|
||||||
func (b *Buffer) WriteTo(w io.Writer) (n int64, err error) {
|
func (b *Buffer) WriteTo(w io.Writer) (n int64, err error) {
|
||||||
b.lastRead = opInvalid
|
b.lastRead = opInvalid
|
||||||
if b.off < len(b.buf) {
|
if b.off < len(b.buf) {
|
||||||
|
nBytes := b.Len()
|
||||||
m, e := w.Write(b.buf[b.off:])
|
m, e := w.Write(b.buf[b.off:])
|
||||||
|
if m > nBytes {
|
||||||
|
panic("bytes.Buffer.WriteTo: invalid Write count")
|
||||||
|
}
|
||||||
b.off += m
|
b.off += m
|
||||||
n = int64(m)
|
n = int64(m)
|
||||||
if e != nil {
|
if e != nil {
|
||||||
return n, e
|
return n, e
|
||||||
}
|
}
|
||||||
// otherwise all bytes were written, by definition of
|
// all bytes should have been written, by definition of
|
||||||
// Write method in io.Writer
|
// Write method in io.Writer
|
||||||
|
if m != nBytes {
|
||||||
|
return n, io.ErrShortWrite
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Buffer is now empty; reset.
|
// Buffer is now empty; reset.
|
||||||
b.Truncate(0)
|
b.Truncate(0)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue