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() +} | 
