diff options
author | Moritz Poldrack <git@moritz.sh> | 2022-03-24 10:47:34 +0100 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2022-03-24 12:37:53 +0100 |
commit | d66930749a9f8eaa19acab78d57585a170f17429 (patch) | |
tree | 92b66d6777db51772da654403fc36a4939c2c2c1 /widgets/aerc.go | |
parent | 98c9d7bb780a2b8bd3b477f2d530047adf9e2e28 (diff) | |
download | aerc-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 'widgets/aerc.go')
-rw-r--r-- | widgets/aerc.go | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/widgets/aerc.go b/widgets/aerc.go index c96932c4..db447e47 100644 --- a/widgets/aerc.go +++ b/widgets/aerc.go @@ -48,8 +48,8 @@ type Choice struct { func NewAerc(conf *config.AercConfig, logger *log.Logger, cmd func(cmd []string) error, complete func(cmd string) []string, - cmdHistory lib.History) *Aerc { - + cmdHistory lib.History, deferLoop chan struct{}, +) *Aerc { tabs := ui.NewTabs(&conf.Ui) statusbar := ui.NewStack(conf.Ui) @@ -85,7 +85,7 @@ func NewAerc(conf *config.AercConfig, logger *log.Logger, conf.Triggers.ExecuteCommand = cmd for i, acct := range conf.Accounts { - view, err := NewAccountView(aerc, conf, &conf.Accounts[i], logger, aerc) + view, err := NewAccountView(aerc, conf, &conf.Accounts[i], logger, aerc, deferLoop) if err != nil { tabs.Add(errorScreen(err.Error(), conf.Ui), acct.Name) } else { |