|
From: | Mike Thomas |
Subject: | Re: [Gcl-devel] 2.6.2..... |
Date: | Sun, 06 Jun 2004 01:27:14 +1000 |
User-agent: | Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax) |
Hi all.For the purposes of GCL 2.6.2 I think the Maxima "ignore-errors" bug is nailed.
Removing all but the directory separator character conversion in "fix_filename" in "o/mingwin.c" removes the problem. The removed portions are redundant cygwin path conversion which I should have flicked ages ago and device working directory code which seems to have a number of potentially catastrophic holes in it, and which is arguably not necessary anyway. Both of these removed parts copy strings around.
This function is called in a number of places, including the Lisp functions "namestring" and "truename" which are well used in Maxima's "defsystem.lisp".
Even though "fix_filename" does not allocate it's own memory, it does mess with Lisp string object storage and is not wrapped in "BEGIN/END_NO_INTERRUPT" which is probably how the randomisation occurs.
Vadim and Dave, could I please ask you if at all possible to replace the function "fix_filename" in "o/mingwin.c" with this one:
void fix_filename( object pathname, char *filename ) { char *p = filename; while ( *p ) { if (*p=='\\') *p='/'; p++; } }and let us know whether the ignore-errors bug goes away under conditions which would normally cause it for you?
For me those conditions are the use of top level gcc optimisation of less than "-O3" in "configure.in" (don't forget to "autoconf" after altering "configure.in") or just to configure a GCL build with "--enable-debug".
I've tested both former routes to disaster and found them fixed. Hopefully I will have similar success on my other build machine as will each of you on your's.
I can already feel the weight beginning to lift. Millions of Windows users the world over can rest easier tonight.
Good night Mike Thomas.
[Prev in Thread] | Current Thread | [Next in Thread] |