~sircmpwn/aerc

3cd0d5bc284985703a3eb1c2eae3c14a28f7200b — Tom Lebreux 2 years ago ec09ec8
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>
2 files changed, 10 insertions(+), 0 deletions(-)

M commands/account/view-message.go
M widgets/msglist.go
M commands/account/view-message.go => commands/account/view-message.go +6 -0
@@ 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, "…"))

M widgets/msglist.go => widgets/msglist.go +4 -0
@@ 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]]
}