aboutsummaryrefslogtreecommitdiffstats
path: root/aerc.go
diff options
context:
space:
mode:
authorMoritz Poldrack <git@moritz.sh>2022-03-24 10:47:34 +0100
committerRobin Jarry <robin@jarry.cc>2022-03-24 12:37:53 +0100
commitd66930749a9f8eaa19acab78d57585a170f17429 (patch)
tree92b66d6777db51772da654403fc36a4939c2c2c1 /aerc.go
parent98c9d7bb780a2b8bd3b477f2d530047adf9e2e28 (diff)
downloadaerc-d66930749a9f8eaa19acab78d57585a170f17429.tar.gz
logging: fix race condition in startup
If a panic occurs in one of the workers, it can happen after the UI was initialised, but before the cleanup function has been registered. With this the start of the worker loops is deferred until the cleanup routine was registered. Signed-off-by: Moritz Poldrack <git@moritz.sh>
Diffstat (limited to 'aerc.go')
-rw-r--r--aerc.go5
1 files changed, 4 insertions, 1 deletions
diff --git a/aerc.go b/aerc.go
index aa82f98f..9d93a501 100644
--- a/aerc.go
+++ b/aerc.go
@@ -166,11 +166,13 @@ func main() {
ui *libui.UI
)
+ deferLoop := make(chan struct{})
+
aerc = widgets.NewAerc(conf, logger, func(cmd []string) error {
return execCommand(aerc, ui, cmd)
}, func(cmd string) []string {
return getCompletions(aerc, cmd)
- }, &commands.CmdHistory)
+ }, &commands.CmdHistory, deferLoop)
ui, err = libui.Initialize(aerc)
if err != nil {
@@ -180,6 +182,7 @@ func main() {
logging.UICleanup = func() {
ui.Close()
}
+ close(deferLoop)
if conf.Ui.MouseEnabled {
ui.EnableMouse()