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 }