http://lists.gnu.org/archive/html/bug-texinfo/2007-10/msg00025.html --- texinfo-4.11/info/window.c +++ texinfo-4.11/info/window.c @@ -1,5 +1,5 @@ /* window.c -- windows in Info. - $Id: window.c,v 1.7 2007/07/01 21:20:31 karl Exp $ + $Id: window.c,v 1.8 2007/10/19 18:43:20 karl Exp $ Copyright (C) 1993, 1997, 1998, 2001, 2002, 2003, 2004, 2007 Free Software Foundation, Inc. @@ -249,9 +249,22 @@ break; } else - win= win->next; + win = win->next; } } + + /* One more loop. If any heights or widths have become negative, + set them to zero. This can apparently happen with resizing down to + very small sizes. Sadly, it is not apparent to me where in the + above calculations it goes wrong. */ + for (win = windows; win; win = win->next) + { + if (win->height < 0) + win->height = 0; + + if (win->width < 0) + win->width = 0; + } } /* Make a new window showing NODE, and return that window structure. --- texinfo-4.11/info/display.c +++ texinfo-4.11/info/display.c @@ -1,5 +1,5 @@ /* display.c -- How to display Info windows. - $Id: display.c,v 1.11 2007/07/01 21:20:29 karl Exp $ + $Id: display.c,v 1.12 2007/10/19 18:43:20 karl Exp $ Copyright (C) 1993, 1997, 2003, 2004, 2006, 2007 Free Software Foundation, Inc. @@ -136,8 +136,13 @@ if (display_inhibited) display_was_interrupted_p = 1; - /* If the window has no height, or display is inhibited, quit now. */ - if (!win->height || display_inhibited) + /* If the window has no height, or display is inhibited, quit now. + Strictly speaking, it should only be necessary to test if the + values are equal to zero, since window_new_screen_size should + ensure that the window height/width never becomes negative, but + since historically this has often been the culprit for crashes, do + our best to be doubly safe. */ + if (win->height <= 0 || win->width <= 0 || display_inhibited) return; /* If the window's first row doesn't appear in the_screen, then it