]> granicus.if.org Git - neomutt/commitdiff
Handle error if REGCOMP in pager fails when resizing.
authorKevin McCarthy <kevin@8t8.us>
Sun, 6 Aug 2017 17:22:45 +0000 (10:22 -0700)
committerRichard Russon <rich@flatcap.org>
Thu, 10 Aug 2017 13:03:37 +0000 (14:03 +0100)
Thanks to JiaZhouyang for finding this issue and supplying the original patch.

pager.c

diff --git a/pager.c b/pager.c
index 9071bdeb2680d9eab975e5e47d48abb9718380d8..3a19681c6dd42e999e0f70cd07d1c4618c603801 100644 (file)
--- 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;