From 2d1fb953fc9fefd9eeab099004f34e29db07335f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E6=99=BA=E8=B6=850668000959?= Date: Sun, 7 Jun 2026 12:05:09 +0800 Subject: [PATCH] fix: check Close() error after io.Copy to writable files --- cmd/picoclaw/internal/skills/helpers.go | 8 +++++--- pkg/migrate/internal/common.go | 9 ++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/cmd/picoclaw/internal/skills/helpers.go b/cmd/picoclaw/internal/skills/helpers.go index e27a32711..0ec602005 100644 --- a/cmd/picoclaw/internal/skills/helpers.go +++ b/cmd/picoclaw/internal/skills/helpers.go @@ -345,9 +345,11 @@ func copyDirectory(src, dst string) error { if err != nil { return err } - defer dstFile.Close() - _, err = io.Copy(dstFile, srcFile) - return err + _, copyErr := io.Copy(dstFile, srcFile) + if closeErr := dstFile.Close(); closeErr != nil && copyErr == nil { + return fmt.Errorf("close destination file %s: %w", dstPath, closeErr) + } + return copyErr }) } diff --git a/pkg/migrate/internal/common.go b/pkg/migrate/internal/common.go index f1179c3a9..c8ba5202a 100644 --- a/pkg/migrate/internal/common.go +++ b/pkg/migrate/internal/common.go @@ -1,6 +1,7 @@ package internal import ( + "fmt" "io" "os" "path/filepath" @@ -149,8 +150,10 @@ func CopyFile(src, dst string) error { if err != nil { return err } - defer dstFile.Close() - _, err = io.Copy(dstFile, srcFile) - return err + _, copyErr := io.Copy(dstFile, srcFile) + if closeErr := dstFile.Close(); closeErr != nil && copyErr == nil { + return fmt.Errorf("close destination file %s: %w", dst, closeErr) + } + return copyErr }