From 18eab97676a246f78ddf0a8500b29e8c7e1ca8ef Mon Sep 17 00:00:00 2001 From: Kevin McCarthy Date: Sun, 6 Aug 2017 10:22:45 -0700 Subject: [PATCH] Handle error if REGCOMP in pager fails when resizing. Thanks to JiaZhouyang for finding this issue and supplying the original patch. --- pager.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/pager.c b/pager.c index 9071bdeb2..3a19681c6 100644 --- a/pager.c +++ b/pager.c @@ -1734,6 +1734,9 @@ static void pager_menu_redraw(struct Menu *pager_menu) struct PagerRedrawData *rd = pager_menu->redraw_data; int i, j; char buffer[LONG_STRING]; +#if defined(USE_SLANG_CURSES) || defined(HAVE_RESIZETERM) + int err; +#endif if (!rd) return; @@ -1803,9 +1806,18 @@ static void pager_menu_redraw(struct Menu *pager_menu) { if ((rd->search_compiled = Resize->search_compiled)) { - REGCOMP(&rd->search_re, rd->searchbuf, REG_NEWLINE | mutt_which_case(rd->searchbuf)); - rd->search_flag = MUTT_SEARCH; - rd->search_back = Resize->search_back; + if ((err = REGCOMP(&rd->search_re, rd->searchbuf, + REG_NEWLINE | mutt_which_case(rd->searchbuf))) != 0) + { + regerror(err, &rd->search_re, buffer, sizeof(buffer)); + mutt_error("%s", buffer); + rd->search_compiled = 0; + } + else + { + rd->search_flag = MUTT_SEARCH; + rd->search_back = Resize->search_back; + } } rd->lines = Resize->line; pager_menu->redraw |= REDRAW_FLOW; -- 2.49.0