From: Ian Lance Taylor Date: Thu, 2 Feb 2012 00:37:02 +0000 (-0800) Subject: os/exec: make sure file is not closed early in leaked fd test X-Git-Tag: weekly.2012-02-07~135 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=2b8d5be55f0201c3d4047ea8510b168eb37c5074;p=gostls13.git os/exec: make sure file is not closed early in leaked fd test Without this change, fd3 can be collected by the garbage collector and finalized, which causes the file descriptor to be closed, which causes the call to os.Open to return 3 rather than the expected descriptor number. R=golang-dev, gri, bradfitz, bradfitz, iant CC=golang-dev https://golang.org/cl/5607056 --- diff --git a/src/pkg/os/exec/exec_test.go b/src/pkg/os/exec/exec_test.go index d456dfb53d..d00d12008f 100644 --- a/src/pkg/os/exec/exec_test.go +++ b/src/pkg/os/exec/exec_test.go @@ -309,6 +309,12 @@ func TestHelperProcess(*testing.T) { f.Close() } } + // Referring to fd3 here ensures that it is not + // garbage collected, and therefore closed, while + // executing the wantfd loop above. It doesn't matter + // what we do with fd3 as long as we refer to it; + // closing it is the easy choice. + fd3.Close() os.Stderr.Write(bs) case "exit": n, _ := strconv.Atoi(args[0])