diff options
author | Tom Lebreux <tomlebreux@cock.li> | 2019-04-08 23:14:14 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-04-10 15:40:06 -0400 |
commit | 3cd0d5bc284985703a3eb1c2eae3c14a28f7200b (patch) | |
tree | 8e782ccd35319576ec108dbcd755abbfba106c11 | |
parent | ec09ec8b0e70dabe216c2109e52fd21ef7fcae2b (diff) | |
download | aerc-3cd0d5bc284985703a3eb1c2eae3c14a28f7200b.tar.gz |
Fix segfault on :view-message for unloaded message
This also fixes segfault on :view-message on empty directory
Signed-off-by: Tom Lebreux <tomlebreux@cock.li>
-rw-r--r-- | commands/account/view-message.go | 6 | ||||
-rw-r--r-- | widgets/msglist.go | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/commands/account/view-message.go b/commands/account/view-message.go index edafd09b..ea6addc2 100644 --- a/commands/account/view-message.go +++ b/commands/account/view-message.go @@ -17,8 +17,14 @@ func ViewMessage(aerc *widgets.Aerc, args []string) error { return errors.New("Usage: view-message") } acct := aerc.SelectedAccount() + if acct.Messages().Empty() { + return nil + } store := acct.Messages().Store() msg := acct.Messages().Selected() + if msg == nil { + return nil + } viewer := widgets.NewMessageViewer(aerc.Config(), store, msg) aerc.NewTab(viewer, runewidth.Truncate( msg.Envelope.Subject, 32, "…")) diff --git a/widgets/msglist.go b/widgets/msglist.go index 1624e647..ea9b2452 100644 --- a/widgets/msglist.go +++ b/widgets/msglist.go @@ -138,6 +138,10 @@ func (ml *MessageList) Store() *lib.MessageStore { return ml.store } +func (ml *MessageList) Empty() bool { + return ml.store == nil || len(ml.store.Uids) == 0 +} + func (ml *MessageList) Selected() *types.MessageInfo { return ml.store.Messages[ml.store.Uids[len(ml.store.Uids)-ml.selected-1]] } |