From 2b8d5be55f0201c3d4047ea8510b168eb37c5074 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 1 Feb 2012 16:37:02 -0800 Subject: [PATCH] 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 --- src/pkg/os/exec/exec_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pkg/os/exec/exec_test.go b/src/pkg/os/exec/exec_test.go index d456dfb53d3..d00d12008f7 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])