]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/cgo: close the file opened in the dynimport function
authorguoguangwu <guoguangwug@gmail.com>
Thu, 28 Mar 2024 01:24:19 +0000 (01:24 +0000)
committerGopher Robot <gobot@golang.org>
Fri, 29 Mar 2024 16:41:10 +0000 (16:41 +0000)
Change-Id: Ic457e994b50a0e8c1769311937eede1e710a1293
GitHub-Last-Rev: a8af7b5e6710687273203235c19d5402d7f28832
GitHub-Pull-Request: golang/go#66549
Reviewed-on: https://go-review.googlesource.com/c/go/+/574537
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Emmanuel Odeke <emmanuel@orijtech.com>
Reviewed-by: Than McIntosh <thanm@google.com>
Run-TryBot: Emmanuel Odeke <emmanuel@orijtech.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Emmanuel Odeke <emmanuel@orijtech.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>

src/cmd/cgo/out.go

index 2189ad5f41f2e8c6e96f3164249aa62ad32352f8..5329cb3cd2d2248914e1ea15e982cfb08a1c969a 100644 (file)
@@ -335,12 +335,19 @@ func dynimport(obj string) {
                if err != nil {
                        fatalf("%s", err)
                }
+               defer func() {
+                       if err = f.Close(); err != nil {
+                               fatalf("error closing %s: %v", *dynout, err)
+                       }
+               }()
+
                stdout = f
        }
 
        fmt.Fprintf(stdout, "package %s\n", *dynpackage)
 
        if f, err := elf.Open(obj); err == nil {
+               defer f.Close()
                if *dynlinker {
                        // Emit the cgo_dynamic_linker line.
                        if sec := f.Section(".interp"); sec != nil {
@@ -368,6 +375,7 @@ func dynimport(obj string) {
        }
 
        if f, err := macho.Open(obj); err == nil {
+               defer f.Close()
                sym, _ := f.ImportedSymbols()
                for _, s := range sym {
                        if len(s) > 0 && s[0] == '_' {
@@ -384,6 +392,7 @@ func dynimport(obj string) {
        }
 
        if f, err := pe.Open(obj); err == nil {
+               defer f.Close()
                sym, _ := f.ImportedSymbols()
                for _, s := range sym {
                        ss := strings.Split(s, ":")
@@ -396,6 +405,7 @@ func dynimport(obj string) {
        }
 
        if f, err := xcoff.Open(obj); err == nil {
+               defer f.Close()
                sym, err := f.ImportedSymbols()
                if err != nil {
                        fatalf("cannot load imported symbols from XCOFF file %s: %v", obj, err)