From 66c3f260301cac915959651293c11c8207d331e8 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Wed, 14 Apr 2021 11:17:47 +0200 Subject: [PATCH] unix: don't defer close raw Socketpair fds in tests on darwin, freebsd and zos Follow up on three occurences missed in CL 309689. The raw fds are successively wrapped using os.NewFile and will be closed by (*os.File).Close. Avoids a double close, in the worst case closing an unrelated fd. Change-Id: Iffe4cc4f77db10237547915c362c4aeb20cc9630 Reviewed-on: https://go-review.googlesource.com/c/sys/+/310010 Trust: Tobias Klauser Run-TryBot: Tobias Klauser Reviewed-by: Ian Lance Taylor --- unix/syscall_darwin_test.go | 7 +++---- unix/syscall_freebsd_test.go | 7 +++---- unix/syscall_zos_test.go | 2 -- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/unix/syscall_darwin_test.go b/unix/syscall_darwin_test.go index eaebf2d7..731488f4 100644 --- a/unix/syscall_darwin_test.go +++ b/unix/syscall_darwin_test.go @@ -224,19 +224,18 @@ func TestGetsockoptXucred(t *testing.T) { if err != nil { t.Fatalf("Socketpair: %v", err) } - defer unix.Close(fds[0]) - defer unix.Close(fds[1]) srvFile := os.NewFile(uintptr(fds[0]), "server") + cliFile := os.NewFile(uintptr(fds[1]), "client") defer srvFile.Close() + defer cliFile.Close() + srv, err := net.FileConn(srvFile) if err != nil { t.Fatalf("FileConn: %v", err) } defer srv.Close() - cliFile := os.NewFile(uintptr(fds[1]), "client") - defer cliFile.Close() cli, err := net.FileConn(cliFile) if err != nil { t.Fatalf("FileConn: %v", err) diff --git a/unix/syscall_freebsd_test.go b/unix/syscall_freebsd_test.go index f56d9bcc..08411489 100644 --- a/unix/syscall_freebsd_test.go +++ b/unix/syscall_freebsd_test.go @@ -303,19 +303,18 @@ func TestGetsockoptXucred(t *testing.T) { if err != nil { t.Fatalf("Socketpair: %v", err) } - defer unix.Close(fds[0]) - defer unix.Close(fds[1]) srvFile := os.NewFile(uintptr(fds[0]), "server") + cliFile := os.NewFile(uintptr(fds[1]), "client") defer srvFile.Close() + defer cliFile.Close() + srv, err := net.FileConn(srvFile) if err != nil { t.Fatalf("FileConn: %v", err) } defer srv.Close() - cliFile := os.NewFile(uintptr(fds[1]), "client") - defer cliFile.Close() cli, err := net.FileConn(cliFile) if err != nil { t.Fatalf("FileConn: %v", err) diff --git a/unix/syscall_zos_test.go b/unix/syscall_zos_test.go index 94a51357..ef5e3913 100644 --- a/unix/syscall_zos_test.go +++ b/unix/syscall_zos_test.go @@ -206,8 +206,6 @@ func TestPassFD(t *testing.T) { if err != nil { t.Fatalf("Socketpair: %v", err) } - defer unix.Close(fds[0]) - defer unix.Close(fds[1]) writeFile := os.NewFile(uintptr(fds[0]), "child-writes") readFile := os.NewFile(uintptr(fds[1]), "parent-reads") defer writeFile.Close()