diff options
Diffstat (limited to 'libgo/go/io/io.go')
-rw-r--r-- | libgo/go/io/io.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/libgo/go/io/io.go b/libgo/go/io/io.go index 022fdb67645..7507a84929f 100644 --- a/libgo/go/io/io.go +++ b/libgo/go/io/io.go @@ -62,8 +62,11 @@ var ErrNoProgress = errors.New("multiple Read calls return no data or error") // allowed EOF behaviors. // // Implementations of Read are discouraged from returning a -// zero byte count with a nil error, and callers should treat -// that situation as a no-op. +// zero byte count with a nil error, except when len(p) == 0. +// Callers should treat a return of 0 and nil as indicating that +// nothing happened; in particular it does not indicate EOF. +// +// Implementations must not retain p. type Reader interface { Read(p []byte) (n int, err error) } @@ -75,6 +78,8 @@ type Reader interface { // and any error encountered that caused the write to stop early. // Write must return a non-nil error if it returns n < len(p). // Write must not modify the slice data, even temporarily. +// +// Implementations must not retain p. type Writer interface { Write(p []byte) (n int, err error) } @@ -192,6 +197,8 @@ type WriterTo interface { // // Clients of ReadAt can execute parallel ReadAt calls on the // same input source. +// +// Implementations must not retain p. type ReaderAt interface { ReadAt(p []byte, off int64) (n int, err error) } @@ -209,6 +216,8 @@ type ReaderAt interface { // // Clients of WriteAt can execute parallel WriteAt calls on the same // destination if the ranges do not overlap. +// +// Implementations must not retain p. type WriterAt interface { WriteAt(p []byte, off int64) (n int, err error) } |