aboutsummaryrefslogtreecommitdiff
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
parenta72313b8a1c5d1b6df646e839e7c2a27697f4c88 (diff)
downloadaerc-8c2a9cf6b90d5fe18fa7e5e110f6460e967ee036.tar.gz
aerc-8c2a9cf6b90d5fe18fa7e5e110f6460e967ee036.zip
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>
-rw-r--r--go.mod2
-rw-r--r--go.sum4
-rw-r--r--widgets/terminal.go3
3 files changed, 5 insertions, 4 deletions
diff --git a/go.mod b/go.mod
index 28273a95..129ecc97 100644
--- a/go.mod
+++ b/go.mod
@@ -3,7 +3,7 @@ module git.sr.ht/~rjarry/aerc
go 1.18
require (
- git.sr.ht/~rockorager/tcell-term v0.7.0
+ git.sr.ht/~rockorager/tcell-term v0.7.1
git.sr.ht/~sircmpwn/getopt v1.0.0
github.com/ProtonMail/go-crypto v0.0.0-20230417170513-8ee5748c52b5
github.com/arran4/golang-ical v0.0.0-20230318005454-19abf92700cc
diff --git a/go.sum b/go.sum
index 284f13af..3c269730 100644
--- a/go.sum
+++ b/go.sum
@@ -1,5 +1,5 @@
-git.sr.ht/~rockorager/tcell-term v0.7.0 h1:XVbiLRIN9a3d6yzjh+Cl5yudwMiNkNDwCTRhlww8iWY=
-git.sr.ht/~rockorager/tcell-term v0.7.0/go.mod h1:Snxh5CrziiA2CjyLOZ6tGAg5vMPlE+REMWT3rtKuyyQ=
+git.sr.ht/~rockorager/tcell-term v0.7.1 h1:VMQu1DtqXjcY9WR1x1OSG0C45gK8nDaQVGGH3z+xcvg=
+git.sr.ht/~rockorager/tcell-term v0.7.1/go.mod h1:Snxh5CrziiA2CjyLOZ6tGAg5vMPlE+REMWT3rtKuyyQ=
git.sr.ht/~sircmpwn/getopt v1.0.0 h1:/pRHjO6/OCbBF4puqD98n6xtPEgE//oq5U8NXjP7ROc=
git.sr.ht/~sircmpwn/getopt v1.0.0/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw=
github.com/ProtonMail/crypto v0.0.0-20200420072808-71bec3603bf3 h1:JW27/kGLQzeM1Fxg5YQhdkTEAU7HIAHMgSag35zVTnY=
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() {