www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/07/01/15:15:06

Date: Sat, 1 Jul 2000 15:13:32 -0400 (EDT)
Message-Id: <200007011913.PAA16189@indy.delorie.com>
From: Eli Zaretskii <eliz AT delorie DOT com>
To: jeffw AT darwin DOT sfbr DOT org
CC: djgpp AT delorie DOT com
In-reply-to: <200007011741.MAA07347@darwin.sfbr.org> (message from Jeff T
Williams on Sat, 1 Jul 2000 12:46:45 -0600)
Subject: Re: ANNOUNCE: DJGPP ports of many packages recompiled
References: <200007011741 DOT MAA07347 AT darwin DOT sfbr DOT org>
Reply-To: djgpp AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: djgpp AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

> From: Jeff T Williams <jeffw AT darwin DOT sfbr DOT org>
> Date: Sat,  1 Jul 2000 12:46:45 -0600
> 
> I didn't realize that `/bcurrie/docs' was also in my INFOPATH. So, when `info' 
> grabs all the `dir' files in INFOPATH it ends up with essentially two copies 
> of the stock djgpp 2.03 `dir'.  For some reason this causes the crash when I 
> type `info find'.

Okay, this is a known bug in all versions of Texinfo including the
latest v4.0: if there are several versions of DIR, and some kind of
trouble happens while Info searches for files, the browser crashes.
The same happens if you have DIR and DIR.gz, and the former is empty
or otherwise corrupted.

The bug is complicated, but in a nutshell, Info becomes confused by
several copies of DIR and eventually free's the storage used for the
special node where it keeps all the DIR files it finds along INFOPATH
concatenated together.  It then tries to use the info in the DIR node,
with understandably disastrous consequences.

This will be corrected in a future release of Texinfo.  I sent patches
to the maintainer a few months ago, reproduced below, that supply a
short-term band-aid for the bug.  The real solution will probably have
to be more radical.

If you can download the sources and rebuild them with the patch
attached below, please see if it prevents Info from crashing.

2000-03-21  Eli Zaretskii  <eliz AT is DOT elta DOT co DOT il>

	* info/nodes.c (info_find_file_internal): If file_buffer has its
	CannotGC flag set, treat it as a DIR node.

--- info/nodes.c~0	Sun Aug 15 13:18:08 1999
+++ info/nodes.c	Tue Mar 21 19:17:14 2000
@@ -232,7 +232,11 @@ info_find_file_internal (filename, get_t
 
             /* This file is loaded.  If the filename that we want is
                specifically "dir", then simply return the file buffer. */
-            if (is_dir_name (filename_non_directory (filename)))
+            if (is_dir_name (filename_non_directory (filename))
+		/* This additional clause makes sure that we don't miss
+		   a DIR node just because it has some funny file name,
+		   like "dir.info", scribbled on it.  */
+		|| (file_buffer->flags & N_CannotGC) != 0)
               return file_buffer;
 
 #if defined (HANDLE_MAN_PAGES)

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019