aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/io/io.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/io/io.go')
-rw-r--r--libgo/go/io/io.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/libgo/go/io/io.go b/libgo/go/io/io.go
index 28dab08..27482de 100644
--- a/libgo/go/io/io.go
+++ b/libgo/go/io/io.go
@@ -385,8 +385,16 @@ func copyBuffer(dst Writer, src Reader, buf []byte) (written int64, err error) {
if rt, ok := dst.(ReaderFrom); ok {
return rt.ReadFrom(src)
}
+ size := 32 * 1024
+ if l, ok := src.(*LimitedReader); ok && int64(size) > l.N {
+ if l.N < 1 {
+ size = 1
+ } else {
+ size = int(l.N)
+ }
+ }
if buf == nil {
- buf = make([]byte, 32*1024)
+ buf = make([]byte, size)
}
for {
nr, er := src.Read(buf)