aboutsummaryrefslogtreecommitdiffstats
path: root/widgets
diff options
context:
space:
mode:
authorTim Culverhouse <tim@timculverhouse.com>2023-04-25 07:57:13 -0500
committerRobin Jarry <robin@jarry.cc>2023-04-26 00:07:50 +0200
commit8c2a9cf6b90d5fe18fa7e5e110f6460e967ee036 (patch)
tree4b943ad0d4a1959fd8e8c2f28bf1afdcce321f69 /widgets
parenta72313b8a1c5d1b6df646e839e7c2a27697f4c88 (diff)
downloadaerc-8c2a9cf6b90d5fe18fa7e5e110f6460e967ee036.tar.gz
term: fix handling of failed command
A panic occurs when a terminal is launched with a command that fails: :term blabla The underlying terminal does not need to be closed if the command failed to start: all resources are cleaned up upon failure to start already. Don't attempt to close terminal if the command didn't start. With the above fix in place, the tab will linger around until a redraw occurs, as there is nothing queuing a redraw on this behavior. Add a QueueRedraw in the tabs.Remove method to clean up the tabbar. The issue in tcell-term that causes this panic has been address there as well, released as 0.7.1. Update aerc's version. Reported-by: Koni Marti <koni.marti@gmail.com> Signed-off-by: Tim Culverhouse <tim@timculverhouse.com> Tested-by: Koni Marti <koni.marti@gmail.com> Acked-by: Robin Jarry <robin@jarry.cc>
Diffstat (limited to 'widgets')
-rw-r--r--widgets/terminal.go3
1 files changed, 2 insertions, 1 deletions
diff --git a/widgets/terminal.go b/widgets/terminal.go
index 8a75fb78..9c2123cc 100644
--- a/widgets/terminal.go
+++ b/widgets/terminal.go
@@ -46,7 +46,7 @@ func (term *Terminal) closeErr(err error) {
if term.closed {
return
}
- if term.vterm != nil {
+ if term.vterm != nil && err == nil {
// Stop receiving events
term.vterm.Detach()
term.vterm.Close()
@@ -58,6 +58,7 @@ func (term *Terminal) closeErr(err error) {
term.ctx.HideCursor()
}
term.closed = true
+ ui.QueueRedraw()
}
func (term *Terminal) Destroy() {