From 6ebb665a622d5d5dc33885f7c07d78a8174cf068 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Wed, 29 Jul 2026 14:05:50 +0900 Subject: [PATCH] Close merge destination before removing the source --- upgrade/upgrade.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/upgrade/upgrade.go b/upgrade/upgrade.go index aa862e3..4a65531 100644 --- a/upgrade/upgrade.go +++ b/upgrade/upgrade.go @@ -83,21 +83,29 @@ func mergeFile(src string, dst string) error { if err != nil { return err } - defer fdst.Close() // Read source content content, err := ioutil.ReadFile(src) if err != nil { + fdst.Close() return err } // Add Additional newline if _, err := fdst.WriteString("\n"); err != nil { + fdst.Close() return err } fmt.Printf("Merging: %s into %s\n", src, dst) if _, err = fdst.Write(content); err != nil { + fdst.Close() + return err + } + + // Close may surface deferred write errors; the source must survive + // unless the merge fully reached the destination. + if err := fdst.Close(); err != nil { return err }