Skip to content

Commit 6876aad

Browse files
committed
core/cp: hide readfrom/writeto iff needed
1 parent 9aba11a commit 6876aad

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

intra/core/cp.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,23 @@ func Stream(dst io.Writer, src io.Reader) (int64, error) {
4242
return 0, errNoStream
4343
}
4444

45+
if _, ok := src.(io.WriterTo); ok {
46+
// hide WriteTo method of src
47+
src = readerNoWriteTo{Reader: src}
48+
}
49+
if _, ok := dst.(io.ReaderFrom); ok {
50+
// hide ReadFrom method of dst
51+
dst = writerNoReadFrom{Writer: dst}
52+
}
53+
4554
bptr := Alloc()
4655
b := *bptr
4756
b = b[:cap(b)]
4857
defer func() {
4958
*bptr = b
5059
Recycle(bptr)
5160
}()
52-
return io.CopyBuffer(
53-
writerNoReadFrom{Writer: dst},
54-
readerNoWriteTo{Reader: src},
55-
b,
56-
)
61+
return io.CopyBuffer(dst, src, b)
5762
}
5863

5964
// ref: github.com/golang/go/issues/58808

0 commit comments

Comments
 (0)