From 5bf70f4ee86e40cb5b4fb99c44bcc1d74f7836b2 Mon Sep 17 00:00:00 2001 From: Tao Qingyun Date: Fri, 9 Oct 2020 14:20:22 +0800 Subject: [PATCH] io: add ErrBadWriteCount Change-Id: I9348ceae16dc38d42914959b5b0d7c5535db6a5a --- src/io/io.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/io/io.go b/src/io/io.go index b6c339e9ae..7a5d7d1a3e 100644 --- a/src/io/io.go +++ b/src/io/io.go @@ -30,7 +30,7 @@ var ErrShortWrite = errors.New("short write") // ErrShortBuffer means that a read required a longer buffer than was provided. var ErrShortBuffer = errors.New("short buffer") -// ErrBadWriteCount means that a Write returned impossible count +// ErrBadWriteCount means that a write returned an impossible count. var ErrBadWriteCount = errors.New("Write returned impossible count") // EOF is the error returned by Read when no more input is available. @@ -412,15 +412,13 @@ func copyBuffer(dst Writer, src Reader, buf []byte) (written int64, err error) { nr, er := src.Read(buf) if nr > 0 { nw, ew := dst.Write(buf[0:nr]) - if nw > 0 { - written += int64(nw) - } - if ew != nil { - err = ew + if nw < 0 || nr < nw { + err = ErrBadWriteCount break } - if nw < 0 || nw > nr { - err = ErrBadWriteCount + written += int64(nw) + if ew != nil { + err = ew break } if nr != nw {