diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-10-26 17:50:10 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-10-26 17:50:10 +0000 |
commit | 85c2f96c1cd3d1cbdbd20ad26f7d26dafbca087c (patch) | |
tree | de04d5291829d3f364a180607a01c072cc985bb6 /libgo/go/syscall | |
parent | 385710cf27e9a75c314993c21f44ed5ca50d4a6a (diff) | |
download | gcc-85c2f96c1cd3d1cbdbd20ad26f7d26dafbca087c.tar.gz |
syscall: fix creds_test to reliably close os.File
Uncovered by Uros Bizjak.
Before this patch the test would close the file descriptor but
not the os.File. When the os.File was GC'ed, the finalizer
would close the file descriptor again. That would cause
problems if the same file descriptor were returned by a later
call to open in another test.
On my system:
> GOGC=30 go test
--- FAIL: TestPassFD (0.04 seconds)
passfd_test.go:62: FileConn: dup: bad file descriptor
FAIL
From-SVN: r192854
Diffstat (limited to 'libgo/go/syscall')
-rw-r--r-- | libgo/go/syscall/creds_test.go | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libgo/go/syscall/creds_test.go b/libgo/go/syscall/creds_test.go index 6eaa97e57b8..b1894c66b07 100644 --- a/libgo/go/syscall/creds_test.go +++ b/libgo/go/syscall/creds_test.go @@ -31,14 +31,18 @@ func TestSCMCredentials(t *testing.T) { t.Fatalf("SetsockoptInt: %v", err) } - srv, err := net.FileConn(os.NewFile(uintptr(fds[0]), "")) + srvFile := os.NewFile(uintptr(fds[0]), "server") + defer srvFile.Close() + srv, err := net.FileConn(srvFile) if err != nil { t.Errorf("FileConn: %v", err) return } defer srv.Close() - cli, err := net.FileConn(os.NewFile(uintptr(fds[1]), "")) + cliFile := os.NewFile(uintptr(fds[1]), "client") + defer cliFile.Close() + cli, err := net.FileConn(cliFile) if err != nil { t.Errorf("FileConn: %v", err) return |