]> granicus.if.org Git - neomutt/commitdiff
Fix arithmetic exception due to menu->pagelen being negative.
authorAnton Lindqvist <anton.lindqvist@gmail.com>
Wed, 20 Jul 2016 01:56:13 +0000 (18:56 -0700)
committerAnton Lindqvist <anton.lindqvist@gmail.com>
Wed, 20 Jul 2016 01:56:13 +0000 (18:56 -0700)
Resizing the terminal window down to two lines when in an empty
mailbox causes mutt to crash due to division by zero since menu->max
equals 0 and menu->pagelen < 0 in status.c:205.

Fixing the problem at this specific line felt wrong since I did notice
menu->pagelen being negative. The pagelen is inherited from the rows
calculation in mutt_reflow_windows. Since the number of lines can
potentially be smaller than the accumulated number of rows acquired by
the status, help and message window, make sure the calculation does
not turn negative.

curs_lib.c

index ed0d10c34127b79f920c921c388d1a0a4f3f58a4..8b21c43fb08cea5d3221d7b2c031d7373eabc279 100644 (file)
@@ -531,8 +531,8 @@ void mutt_reflow_windows (void)
   MuttMessageWindow->row_offset = LINES - 1;
 
   memcpy (MuttIndexWindow, MuttStatusWindow, sizeof (mutt_window_t));
-  MuttIndexWindow->rows = LINES - MuttStatusWindow->rows - MuttHelpWindow->rows -
-                          MuttMessageWindow->rows;
+  MuttIndexWindow->rows = MAX(LINES - MuttStatusWindow->rows -
+                             MuttHelpWindow->rows - MuttMessageWindow->rows, 0);
   MuttIndexWindow->row_offset = option (OPTSTATUSONTOP) ? MuttStatusWindow->rows :
                                                           MuttHelpWindow->rows;