From 4501438f8125924e549e436a2b8b64608358f29d Mon Sep 17 00:00:00 2001 From: iceymoss <114280774+iceymoss@users.noreply.github.com> Date: Sat, 28 Mar 2026 02:16:29 +0800 Subject: [PATCH] fix(ui): always clean up external editor temp file (#2503) --- internal/ui/model/ui.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/internal/ui/model/ui.go b/internal/ui/model/ui.go index 01d54feaf117e6a22b7015c27186ea94063d55cc..72826f8494f60fed9e3ade465cafb4737fcf4da5 100644 --- a/internal/ui/model/ui.go +++ b/internal/ui/model/ui.go @@ -2611,13 +2611,14 @@ func (m *UI) openEditor(value string) tea.Cmd { if err != nil { return util.ReportError(err) } + tmpPath := tmpfile.Name() defer tmpfile.Close() //nolint:errcheck if _, err := tmpfile.WriteString(value); err != nil { return util.ReportError(err) } cmd, err := editor.Command( "crush", - tmpfile.Name(), + tmpPath, editor.AtPosition( m.textarea.Line()+1, m.textarea.Column()+1, @@ -2627,17 +2628,20 @@ func (m *UI) openEditor(value string) tea.Cmd { return util.ReportError(err) } return tea.ExecProcess(cmd, func(err error) tea.Msg { + defer func() { + _ = os.Remove(tmpPath) + }() + if err != nil { return util.ReportError(err) } - content, err := os.ReadFile(tmpfile.Name()) + content, err := os.ReadFile(tmpPath) if err != nil { return util.ReportError(err) } if len(content) == 0 { return util.ReportWarn("Message is empty") } - os.Remove(tmpfile.Name()) return openEditorMsg{ Text: strings.TrimSpace(string(content)), }