From 520d30f387d711ded8316426429366ba63b1b6bb Mon Sep 17 00:00:00 2001 From: vcrhonek Date: Nov 13 2007 11:27:40 +0000 Subject: Fix info crashes when resizing window --- diff --git a/texinfo-4.11-res_win_segfault.patch b/texinfo-4.11-res_win_segfault.patch new file mode 100644 index 0000000..c3eb8cd --- /dev/null +++ b/texinfo-4.11-res_win_segfault.patch @@ -0,0 +1,58 @@ +--- texinfo-4.11/info/window.c_old 2007-07-01 23:20:31.000000000 +0200 ++++ texinfo-4.11/info/window.c 2007-11-13 10:52:44.000000000 +0100 +@@ -1,5 +1,5 @@ + /* window.c -- windows in Info. +- $Id: texinfo-4.11-res_win_segfault.patch,v 1.1 2007/11/13 11:27:40 vcrhonek Exp $ ++ $Id: texinfo-4.11-res_win_segfault.patch,v 1.1 2007/11/13 11:27:40 vcrhonek 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_old 2007-07-01 23:20:29.000000000 +0200 ++++ texinfo-4.11/info/display.c 2007-11-13 10:53:58.000000000 +0100 +@@ -1,5 +1,5 @@ + /* display.c -- How to display Info windows. +- $Id: texinfo-4.11-res_win_segfault.patch,v 1.1 2007/11/13 11:27:40 vcrhonek Exp $ ++ $Id: texinfo-4.11-res_win_segfault.patch,v 1.1 2007/11/13 11:27:40 vcrhonek 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 diff --git a/texinfo.spec b/texinfo.spec index 2f5e050..bc91125 100644 --- a/texinfo.spec +++ b/texinfo.spec @@ -1,7 +1,7 @@ Summary: Tools needed to create Texinfo format documentation files Name: texinfo Version: 4.11 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv3 Group: Applications/Publishing Url: http://www.gnu.org/software/texinfo/ @@ -9,6 +9,7 @@ Source0: ftp://ftp.gnu.org/gnu/texinfo/texinfo-%{version}.tar.bz2 Source1: info-dir Source2: texi2pdf.man Patch0: texinfo-4.11-zlib.patch +Patch1: texinfo-4.11-res_win_segfault.patch Requires(post): /sbin/install-info Requires(preun): /sbin/install-info Buildroot: %{_tmppath}/%{name}-%{version}-root @@ -59,6 +60,7 @@ for printing using TeX. %prep %setup -q %patch0 -p1 -b .zlib +%patch1 -p1 -b .res_win_segfault %build @@ -137,6 +139,10 @@ fi %{_mandir}/man1/texi2pdf.1* %changelog +* Tue Nov 13 2007 Vitezslav Crhonek - 4.11-2 +- Fix info crashes when resizing window + Resolves: #243971 + * Wed Sep 26 2007 Vitezslav Crhonek - 4.11-1 - Rebase to upstream texinfo-4.11 (update zlib.patch, drop texindex.patch and 0xA0.patch -- both included in upstream)