aboutsummaryrefslogtreecommitdiff
path: root/src/os/file_plan9.go
diff options
context:
space:
mode:
authorCarlos Amedee <carlos@golang.org>2025-07-16 12:05:48 -0700
committerCarlos Amedee <carlos@golang.org>2025-07-18 14:43:56 -0700
commit0451816430486a25966dd76aa92735ac0588b8e5 (patch)
tree51eba396bfe6a0f1d28295c62f4d69dd1e8ad994 /src/os/file_plan9.go
parent34b70684ba2fc8c5cba900e9abdfb874c1bd8c0e (diff)
downloadgo-0451816430486a25966dd76aa92735ac0588b8e5.tar.xz
os: revert the use of AddCleanup to close files and roots
This reverts commit fdaac84480b02e600660d0ca7c15339138807107. Updates #70907 Updates #74574 Updates #74642 Reason for revert: Issue #74574 Change-Id: I7b55b85736e4210d9b6f3fd7a24050ac7bdefef9 Reviewed-on: https://go-review.googlesource.com/c/go/+/688435 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
Diffstat (limited to 'src/os/file_plan9.go')
-rw-r--r--src/os/file_plan9.go10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/os/file_plan9.go b/src/os/file_plan9.go
index 656a3e0bb0..17026409eb 100644
--- a/src/os/file_plan9.go
+++ b/src/os/file_plan9.go
@@ -23,7 +23,7 @@ func fixLongPath(path string) string {
// file is the real representation of *File.
// The extra level of indirection ensures that no clients of os
-// can overwrite this data, which could cause the cleanup
+// can overwrite this data, which could cause the finalizer
// to close the wrong file descriptor.
type file struct {
fdmu poll.FDMutex
@@ -31,7 +31,6 @@ type file struct {
name string
dirinfo atomic.Pointer[dirInfo] // nil unless directory being read
appendMode bool // whether file is opened for appending
- cleanup runtime.Cleanup // cleanup closes the file when no longer referenced
}
// fd is the Plan 9 implementation of Fd.
@@ -49,7 +48,7 @@ func newFileFromNewFile(fd uintptr, name string) *File {
return nil
}
f := &File{&file{sysfd: fdi, name: name}}
- f.cleanup = runtime.AddCleanup(f, func(f *file) { f.close() }, f.file)
+ runtime.SetFinalizer(f.file, (*file).close)
return f
}
@@ -160,9 +159,8 @@ func (file *file) close() error {
err := file.decref()
- // There is no need for a cleanup at this point. File must be alive at the point
- // where cleanup.stop is called.
- file.cleanup.Stop()
+ // no need for a finalizer anymore
+ runtime.SetFinalizer(file, nil)
return err
}