From: guoguangwu Date: Thu, 28 Mar 2024 01:24:19 +0000 (+0000) Subject: cmd/cgo: close the file opened in the dynimport function X-Git-Tag: go1.23rc1~740 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=8f59b28fb3b4539b182296a0e5cda51aa9df9e0c;p=gostls13.git cmd/cgo: close the file opened in the dynimport function 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 Reviewed-by: Emmanuel Odeke Reviewed-by: Than McIntosh Run-TryBot: Emmanuel Odeke TryBot-Result: Gopher Robot Reviewed-by: Ian Lance Taylor Auto-Submit: Emmanuel Odeke LUCI-TryBot-Result: Go LUCI --- diff --git a/src/cmd/cgo/out.go b/src/cmd/cgo/out.go index 2189ad5f41..5329cb3cd2 100644 --- a/src/cmd/cgo/out.go +++ b/src/cmd/cgo/out.go @@ -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)