diff --git a/main.go b/main.go index 0182756651fdba92dd63c4e8dd119f9be5f90fc3..1acbcafb5421a0cbcb1339c0647c7cdb4e96bb31 100644 --- a/main.go +++ b/main.go @@ -2680,19 +2680,32 @@ func openExternalEditor(body string) tea.Cmd { tmpPath := tmpFile.Name() if _, err := tmpFile.WriteString(body); err != nil { - tmpFile.Close() //nolint:errcheck,gosec - os.Remove(tmpPath) //nolint:errcheck,gosec + writeErr := err + if err := tmpFile.Close(); err != nil { + _ = os.Remove(tmpPath) + return func() tea.Msg { + return tui.EditorFinishedMsg{Err: fmt.Errorf("closing temp file after write failure: %w", err)} + } + } + _ = os.Remove(tmpPath) + return func() tea.Msg { + return tui.EditorFinishedMsg{Err: fmt.Errorf("writing temp file: %w", writeErr)} + } + } + if err := tmpFile.Close(); err != nil { + _ = os.Remove(tmpPath) return func() tea.Msg { - return tui.EditorFinishedMsg{Err: fmt.Errorf("writing temp file: %w", err)} + return tui.EditorFinishedMsg{Err: fmt.Errorf("closing temp file: %w", err)} } } - tmpFile.Close() //nolint:errcheck,gosec parts := strings.Fields(editor) args := append(parts[1:], tmpPath) //nolint:gocritic c := exec.Command(parts[0], args...) //nolint:gosec,noctx return tea.ExecProcess(c, func(err error) tea.Msg { - defer os.Remove(tmpPath) //nolint:errcheck + defer func() { + _ = os.Remove(tmpPath) + }() if err != nil { return tui.EditorFinishedMsg{Err: err} }