diff options
author | Russ Cox <rsc@golang.org> | 2010-01-28 17:38:51 -0800 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-01-28 17:38:51 -0800 |
commit | f31de50e666cb24cc723060b7ad612d18f1e6e2f (patch) | |
tree | cfdd0039a8d20eb7eac48ae13c2d44f939a2a442 | |
parent | 1a9c2f230a79aa5e992121b73054a97ab7e6d678 (diff) | |
download | golang-f31de50e666cb24cc723060b7ad612d18f1e6e2f.tar.gz |
io: fix nil Write bug in Pipe
R=nigeltao_golang
CC=golang-dev
http://codereview.appspot.com/194132
-rw-r--r-- | src/pkg/io/pipe.go | 2 | ||||
-rw-r--r-- | src/pkg/io/pipe_test.go | 22 |
2 files changed, 23 insertions, 1 deletions
diff --git a/src/pkg/io/pipe.go b/src/pkg/io/pipe.go index 8f821a9c6..909989ae6 100644 --- a/src/pkg/io/pipe.go +++ b/src/pkg/io/pipe.go @@ -39,7 +39,7 @@ func (p *pipe) Read(data []byte) (n int, err os.Error) { if !p.wclosed { p.wpend = <-p.cr } - if p.wpend == nil { + if p.wclosed { return 0, p.werr } p.wtot = 0 diff --git a/src/pkg/io/pipe_test.go b/src/pkg/io/pipe_test.go index 793bed459..b0ee0f20b 100644 --- a/src/pkg/io/pipe_test.go +++ b/src/pkg/io/pipe_test.go @@ -236,3 +236,25 @@ func TestPipeWriteClose(t *testing.T) { } } } + +func TestWriteEmpty(t *testing.T) { + r, w := Pipe() + go func() { + w.Write([]byte{}) + w.Close() + }() + var b [2]byte + ReadFull(r, b[0:2]) + r.Close() +} + +func TestWriteNil(t *testing.T) { + r, w := Pipe() + go func() { + w.Write(nil) + w.Close() + }() + var b [2]byte + ReadFull(r, b[0:2]) + r.Close() +} |