Stable branch quick fix for pager change-mailbox push/exec bug. stable
authorKevin McCarthy <kevin@8t8.us>
Thu, 17 Oct 2019 07:48:31 +0000 (15:48 +0800)
committerKevin McCarthy <kevin@8t8.us>
Thu, 17 Oct 2019 07:48:31 +0000 (15:48 +0800)
commita327386c5bf676a8321335fca849159ddd664ab9
treec71712b5d43836f99bc5917e51875ffaef3c9490
parent937a1eb12570f5daf598359fa490ccfde1ca0daf
Stable branch quick fix for pager change-mailbox push/exec bug.

The menu functions mutt_push/pop_current_menu() keep track of the menu
stack, automatically setting CurrentMenu when exiting menus.

The only gotcha was the function sharing between the index and pager
menus.  The index uses a hack, setting menu->menu to MENU_PAGER for
operations redirecting through the index and back to the pager
afterwards.

I thought this was covered by the restoration of the menu before
returning to the pager, or when exiting the index switch.  However it
is not: invoking other menus, such as the browser, will result in
CurrentMenu being set to the Pager when exiting those (by
mutt_pop_current_menu()).  This can result in folder hooks failing for
unshared functions.

A better fix is to remove the hack of using menu->menu, because this
can easily cause a problem in the future in other situations.  (I will
make this fix in master next.)  For the stable branch, I am explicitly
setting/restoring CurrentMenu before invoking the folder hooks.
curs_main.c