gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gcl-devel] 2.6.2.....


From: Camm Maguire
Subject: Re: [Gcl-devel] 2.6.2.....
Date: 05 Jun 2004 15:04:21 -0400
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings!

!!!!!

At the eleventh hour, Mike pulls it off... (!)

I had scanned fix_filename before in looking for some call to malloc
therein, and failed to find one, as the routine only called getwd,
which the manpage says is not supposed to malloc.  But then (just now)
I noticed in mingw.h:

#define NEED_GETWD
#define HAVE_GETCWD

which in unixfsys.c redefines getwd to a (potentially) mallocing (on
Linux at least) call to getcwd, hence (possibly) the corruption.
malloc will return new memory in the contiguous block area, whereas
strings on relocatable pages, but worse, the call to gc possible in a
malloc can destroy the memory being massaged in fix_filename :-).  We
also do not check for the possible NULL error return in getcwd, so
maybe the buffer is at times just not being initialized.  We should
fix this at some point.

Of course there could be something else wrong with the deleted section
which I cannot see -- getwd would appear the most likely.

On Linux, getcwd only malloc's if buf is NULL, which it isn't in your
case.  Can you determine if getcwd, or any of the other system calls
invoked in the deleted section, possibly call malloc on mingw?  These
calls are also used elsewhere, e.g. truename.  It might be worth (at
some probably future point), pinpointing the offending call.

On the wine front, you will be happy to know that gcl installs and
runs thereunder, as does msys, but there is currently a limitation in
wine that disables subprocess spawning, hence I can't compile via
gcc.  I took a look at the wine source, and it seems addressable in
principle, but at least 75% of my motivation in doing this has just
disappeared, freeing up more time for other tasks.

I've just made a read-only Version_2_6_2c2 tag with all known mingw
fixes, but still no incorporated test results.  I have these for
OpenBSD and basically for mingw at present -- still need them for
freebsd, macosx, and linux.  OpenBSD and mingw folks may feel free to
repeat the tests on Version_2_6_2c2 (would be nice, but only if time
permits).  I've also backported the minimal ansi-test changes required
to run the random tester, so one no longer needs the head branch to
test, but just 'cd ansi-tests ; echo '(load
"gclload1.lsp")(compile-and-load "random-int-form.lsp")(in-package
:cl-test)(loop-random-int-forms 10000 8)' |
../unixport/saved_ansi_gcl.  You can adjust the size numbers of course
to suit your machine.

Unless the unforeseen arises, 2.6.2c2 + test result README files =>
2.6.2.  I'm going to run my tests now and hopefully have them finished
by the end of the weekend.

Congratulations, all!

Here is the diff from 2.6.2c1 -> 2.6.2c2:
=============================================================================
Index: acconfig.h
===================================================================
RCS file: /cvsroot/gcl/gcl/acconfig.h,v
retrieving revision 1.22.6.9
retrieving revision 1.22.6.9.2.1
diff -u -r1.22.6.9 -r1.22.6.9.2.1
--- acconfig.h  3 May 2004 21:35:56 -0000       1.22.6.9
+++ acconfig.h  27 May 2004 20:40:16 -0000      1.22.6.9.2.1
@@ -167,7 +167,9 @@
 #define ISNORMAL(a) (fpclass(a)>=FP_NZERO)
 #else
 #include <math.h>
-#define ISNORMAL(a) (finite(a) && (a) != 0.0)
+#define ISNORMAL(a) ((sizeof (a) == sizeof (float)) ? \
+                    gcl_isnormal_float(a) : \
+                    gcl_isnormal_double(a))
 #endif
 #endif
 #endif
Index: configure.in
===================================================================
RCS file: /cvsroot/gcl/gcl/configure.in,v
retrieving revision 1.112.4.1.2.2.2.47
diff -u -r1.112.4.1.2.2.2.47 configure.in
--- configure.in        11 May 2004 18:28:08 -0000      1.112.4.1.2.2.2.47
+++ configure.in        5 Jun 2004 17:19:17 -0000
@@ -436,7 +436,7 @@
 # FIXME -- remove when mingw compiler issues are fixed
 case "$use" in
   *mingw*)
-       TFPFLAG="-fomit-frame-pointer";;
+       TFPFLAG="";;
   *)
        TFPFLAG="-fomit-frame-pointer";;
 esac
Index: ansi-tests/ansi-aux.lsp
===================================================================
RCS file: /cvsroot/gcl/gcl/ansi-tests/ansi-aux.lsp,v
retrieving revision 1.54
diff -u -r1.54 ansi-aux.lsp
--- ansi-tests/ansi-aux.lsp     2 Mar 2003 14:25:07 -0000       1.54
+++ ansi-tests/ansi-aux.lsp     5 Jun 2004 17:19:18 -0000
@@ -1426,3 +1426,32 @@
       (unsigned-byte 32) float short-float
       single-float double-float long-float
       nil character base-char symbol boolean null))
+
+(defun random-partition (n p)
+  "Partition n into p numbers, each >= 1.  Return list of numbers."
+  (assert (<= 1 p))
+  #|
+  (cond
+   ((= p 1) (list n))
+   ((< n p) (make-list p :initial-element 1))
+   (t
+    (let ((n1 (1+ (random (floor n p)))))
+      (cons n1 (random-partition (- n n1) (1- p)))))))
+  |#
+  (cond
+   ((= p 1) (list n))
+   ((= n 0) (make-list p :initial-element 0))
+   (t (let* ((r (random p))
+            (n1 (random (1+ n))))
+       (cond
+        ((= r 0)
+         (cons n1 (random-partition (- n n1) (1- p))))
+        ((= r (1- p))
+         (append (random-partition (- n n1) (1- p)) (list n1)))
+        (t
+         (let* ((n2 (random (1+ (- n n1))))
+                (n3 (- n n1 n2)))
+           (append (random-partition n2 r)
+                   (list n1)
+                   (random-partition n3 (- p 1 r))))))))))
+
Index: ansi-tests/cl-symbol-names.lsp
===================================================================
RCS file: /cvsroot/gcl/gcl/ansi-tests/cl-symbol-names.lsp,v
retrieving revision 1.6
diff -u -r1.6 cl-symbol-names.lsp
--- ansi-tests/cl-symbol-names.lsp      1 Mar 2003 03:35:48 -0000       1.6
+++ ansi-tests/cl-symbol-names.lsp      5 Jun 2004 17:19:18 -0000
@@ -2145,6 +2145,9 @@
                 *cl-standard-generic-function-symbols*
                 '(declare)))))
 
+(defparameter *cl-function-or-accessor-symbols*
+  (append *cl-function-symbols* *cl-accessor-symbols*))
+
 (defparameter *cl-non-variable-constant-symbols*
   (set-difference
    *cl-symbols*
Index: ansi-tests/gclload1.lsp
===================================================================
RCS file: /cvsroot/gcl/gcl/ansi-tests/gclload1.lsp,v
retrieving revision 1.4
diff -u -r1.4 gclload1.lsp
--- ansi-tests/gclload1.lsp     19 Feb 2003 13:24:00 -0000      1.4
+++ ansi-tests/gclload1.lsp     5 Jun 2004 17:19:18 -0000
@@ -6,6 +6,28 @@
 (load "cl-test-package.lsp")
 (in-package :cl-test)
 (load "universe.lsp")
+(compile-and-load "random-aux.lsp")
 (compile-and-load "ansi-aux.lsp")
 ;;; (unless (probe-file "ansi-aux.o") (compile-file "ansi-aux.lsp"))
 ;;; (load "ansi-aux.o")
+
+(load "cl-symbol-names.lsp")
+;(load "notes.lsp")
+
+(setq *compile-verbose* nil
+      *compile-print* nil
+      *load-verbose* nil)
+
+#+cmu (setq ext:*gc-verbose* nil)
+
+#+gcl (setq compiler:*suppress-compiler-notes* t
+            compiler:*suppress-compiler-warnings* t
+            compiler:*compile-verbose* nil
+            compiler:*compile-print* nil)
+
+#+lispworks (setq compiler::*compiler-warnings* nil)
+
+#+ecl (setq c:*suppress-compiler-warnings* t
+            c:*suppress-compiler-notes* t)
+
+#+clisp (setq custom::*warn-on-floating-point-contagion* nil)
Index: h/mingw.defs
===================================================================
RCS file: /cvsroot/gcl/gcl/h/mingw.defs,v
retrieving revision 1.26.6.10
diff -u -r1.26.6.10 mingw.defs
--- h/mingw.defs        23 Apr 2004 03:15:32 -0000      1.26.6.10
+++ h/mingw.defs        5 Jun 2004 17:19:41 -0000
@@ -39,6 +39,21 @@
 # Use MSYS makeinfo
 HTML_CMD=makeinfo --html
 
+# Avoid interference from incompatible tcl-tk configuration.
+TK_CONFIG_PREFIX=
+TK_LIBRARY=
+TCL_LIBRARY=
+TK_XINCLUDES=
+TK_INCLUDE=
+TCL_INCLUDE=
+TK_LIB_SPEC=
+TK_BUILD_LIB_SPEC=
+TK_XLIBSW=
+TK_XINCLUDES=
+TCL_LIB_SPEC=
+TCL_DL_LIBS=
+TCL_LIBS=
+
 #
 # End h/mingw.defs
 #
Index: lsp/gcl_mislib.lsp
===================================================================
RCS file: /cvsroot/gcl/gcl/lsp/gcl_mislib.lsp,v
retrieving revision 1.1.2.5
diff -u -r1.1.2.5 gcl_mislib.lsp
--- lsp/gcl_mislib.lsp  22 Mar 2004 02:42:25 -0000      1.1.2.5
+++ lsp/gcl_mislib.lsp  5 Jun 2004 17:19:42 -0000
@@ -126,7 +126,7 @@
 
 (defun default-system-banner ()
   (let (gpled-modules)
-    (dolist (l '(unexec bfd readline))
+    (dolist (l '(:unexec :bfd :readline))
       (when (member l *features*)
        (push l gpled-modules)))
     (format nil "GCL (GNU Common Lisp)  ~a.~a.~a ~a   ~a~%~a~%~a 
~a~%~a~%~a~%~%~a~%" 
Index: o/array.c
===================================================================
RCS file: /cvsroot/gcl/gcl/o/array.c,v
retrieving revision 1.20.4.1.4.4
retrieving revision 1.20.4.1.4.4.2.1
diff -u -r1.20.4.1.4.4 -r1.20.4.1.4.4.2.1
--- o/array.c   3 May 2004 16:53:59 -0000       1.20.4.1.4.4
+++ o/array.c   31 May 2004 22:33:53 -0000      1.20.4.1.4.4.2.1
@@ -269,8 +269,8 @@
 #endif
 
 DEFUNO_NEW("ASET", object, fSaset, SI, 1, ARG_LIMIT, NONE, OO,
-       IO, OO, OO,void,siLaset,(object x,fixnum i,object y, ...),"")
-{ int i1;
+       OO, OO, OO,void,siLaset,(object x,object ii,object y, ...),"")
+{ int i,i1;
   int n = VFUN_NARGS;
   va_list ap;
   if (type_of(x) == t_array)
@@ -279,9 +279,9 @@
      int rank = n - 2; 
      if (x->a.a_rank != rank)
        FEerror(" ~a has wrong rank",1,x);
-     if (rank == 0) return fSaset1(x,0,make_fixnum(i));
-/*      ASSURE_TYPE(ii,t_fixnum); */
-/*      i = fix(ii); */
+     if (rank == 0) return fSaset1(x,0,ii);
+     ASSURE_TYPE(ii,t_fixnum);
+     i = fix(ii);
      if (rank == 1)
        return fSaset1(x,i,y);
      va_start(ap,y);
@@ -321,7 +321,8 @@
    }
   else 
     { 
-/*       ASSURE_TYPE(ii,t_fixnum); */
+     ASSURE_TYPE(ii,t_fixnum);
+     i = fix(ii);
       return fSaset1(x,i,y);
     }
    
@@ -1183,202 +1184,202 @@
 
        /* FIXME do this with C macros */
        switch(i+1){
-       case 3:  (*FFN(fSaset))(ind[0],fix(ind[1]),ind[2]);break;
-       case 4:  (*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3]);break;
-       case 5:  (*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4]);break;
-       case 6:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5]);break;
-       case 7:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6]);break;
-       case 8:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7]);break;
-       case 9:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 3:  (*FFN(fSaset))(ind[0],ind[1],ind[2]);break;
+       case 4:  (*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3]);break;
+       case 5:  (*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4]);break;
+       case 6:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5]);break;
+       case 7:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6]);break;
+       case 8:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7]);break;
+       case 9:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                               ind[8]);break;
-       case 10:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 10:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                ind[8],ind[9]);break;
-       case 11:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 11:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                ind[8],ind[9],ind[10]);break;
-       case 12:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 12:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                ind[8],ind[9],ind[10],ind[11]);break;
-       case 13:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 13:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                ind[8],ind[9],ind[10],ind[11],ind[12]);break;
-       case 14:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 14:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13]);break;
-       case 15:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 15:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14]);break;
-       case 16:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 16:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                ind[15]);break;
-       case 17:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 17:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                ind[15],ind[16]);break;
-       case 18:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 18:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                ind[15],ind[16],ind[17]);break;
-       case 19:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 19:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                ind[15],ind[16],ind[17],ind[18]);break;
-       case 20:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 20:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                ind[15],ind[16],ind[17],ind[18],ind[19]);break;
-       case 21:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 21:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20]);break;
-       case 22:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 22:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21]);break;
-       case 23:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 23:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                ind[22]);break;
-       case 24:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 24:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                ind[22],ind[23]);break;
-       case 25:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 25:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                ind[22],ind[23],ind[24]);break;
-       case 26:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 26:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                ind[22],ind[23],ind[24],ind[25]);break;
-       case 27:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 27:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                ind[22],ind[23],ind[24],ind[25],ind[26]);break;
-       case 28:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 28:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27]);break;
-       case 29:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 29:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28]);break;
-       case 30:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 30:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                ind[29]);break;
-       case 31:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 31:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                ind[29],ind[30]);break;
-       case 32:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 32:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                ind[29],ind[30],ind[31]);break;
-       case 33:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 33:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                ind[29],ind[30],ind[31],ind[32]);break;
-       case 34:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 34:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                ind[29],ind[30],ind[31],ind[32],ind[33]);break;
-       case 35:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 35:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34]);break;
-       case 36:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 36:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35]);break;
-       case 37:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 37:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                ind[36]);break;
-       case 38:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 38:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                ind[36],ind[37]);break;
-       case 39:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 39:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                ind[36],ind[37],ind[38]);break;
-       case 40:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 40:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                ind[36],ind[37],ind[38],ind[39]);break;
-       case 41:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 41:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                ind[36],ind[37],ind[38],ind[39],ind[40]);break;
-       case 42:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 42:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41]);break;
-       case 43:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 43:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42]);break;
-       case 44:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 44:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                ind[43]);break;
-       case 45:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 45:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                ind[43],ind[44]);break;
-       case 46:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 46:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                ind[43],ind[44],ind[45]);break;
-       case 47:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 47:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                ind[43],ind[44],ind[45],ind[46]);break;
-       case 48:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 48:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                ind[43],ind[44],ind[45],ind[46],ind[47]);break;
-       case 49:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 49:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48]);break;
-       case 50:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 50:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
                                
ind[29],ind[30],ind[31],ind[32],ind[33],ind[34],ind[35],
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49]);break;
-       case 51:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 51:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
@@ -1386,7 +1387,7 @@
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49],
                                ind[50]);break;
-       case 52:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 52:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
@@ -1394,7 +1395,7 @@
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49],
                                ind[50],ind[51]);break;
-       case 53:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 53:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
@@ -1402,7 +1403,7 @@
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49],
                                ind[50],ind[51],ind[52]);break;
-       case 54:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 54:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
@@ -1410,7 +1411,7 @@
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49],
                                ind[50],ind[51],ind[52],ind[53]);break;
-       case 55:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 55:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
@@ -1418,7 +1419,7 @@
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49],
                                ind[50],ind[51],ind[52],ind[53],ind[54]);break;
-       case 56:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 56:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
@@ -1426,7 +1427,7 @@
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49],
                                
ind[50],ind[51],ind[52],ind[53],ind[54],ind[55]);break;
-       case 57:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 57:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
@@ -1434,7 +1435,7 @@
                                
ind[36],ind[37],ind[38],ind[39],ind[40],ind[41],ind[42],
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49],
                                
ind[50],ind[51],ind[52],ind[53],ind[54],ind[55],ind[56]);break;
-       case 58:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 58:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
@@ -1443,7 +1444,7 @@
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49],
                                
ind[50],ind[51],ind[52],ind[53],ind[54],ind[55],ind[56],
                                ind[57]);break;
-       case 59:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 59:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
@@ -1452,7 +1453,7 @@
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49],
                                
ind[50],ind[51],ind[52],ind[53],ind[54],ind[55],ind[56],
                                ind[57],ind[58]);break;
-       case 60:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 60:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
@@ -1461,7 +1462,7 @@
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49],
                                
ind[50],ind[51],ind[52],ind[53],ind[54],ind[55],ind[56],
                                ind[57],ind[58],ind[59]);break;
-       case 61:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 61:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
@@ -1470,7 +1471,7 @@
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49],
                                
ind[50],ind[51],ind[52],ind[53],ind[54],ind[55],ind[56],
                                ind[57],ind[58],ind[59],ind[60]);break;
-       case 62:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 62:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
@@ -1479,7 +1480,7 @@
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49],
                                
ind[50],ind[51],ind[52],ind[53],ind[54],ind[55],ind[56],
                                ind[57],ind[58],ind[59],ind[60],ind[61]);break;
-       case 63:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 63:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
@@ -1488,7 +1489,7 @@
                                
ind[43],ind[44],ind[45],ind[46],ind[47],ind[48],ind[49],
                                
ind[50],ind[51],ind[52],ind[53],ind[54],ind[55],ind[56],
                                
ind[57],ind[58],ind[59],ind[60],ind[61],ind[62]);break;
-       case 64:  
(*FFN(fSaset))(ind[0],fix(ind[1]),ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
+       case 64:  
(*FFN(fSaset))(ind[0],ind[1],ind[2],ind[3],ind[4],ind[5],ind[6],ind[7],
                                
ind[8],ind[9],ind[10],ind[11],ind[12],ind[13],ind[14],
                                
ind[15],ind[16],ind[17],ind[18],ind[19],ind[20],ind[21],
                                
ind[22],ind[23],ind[24],ind[25],ind[26],ind[27],ind[28],
Index: o/makefile
===================================================================
RCS file: /cvsroot/gcl/gcl/o/makefile,v
retrieving revision 1.27.6.9
diff -u -r1.27.6.9 makefile
--- o/makefile  20 Mar 2004 02:06:32 -0000      1.27.6.9
+++ o/makefile  5 Jun 2004 17:19:42 -0000
@@ -4,7 +4,7 @@
 
 -include ../makedefs
 
-HDIR   = ../h/
+HDIR   = ../h
 CDIR   = ./
 MPDIR  = ../mp
 
@@ -19,7 +19,7 @@
 MAIN_DEBUG=
 DPP    = ../bin/dpp$(EXE)
 
-DECL := $(HDIR)new_decl.h
+DECL := $(HDIR)/new_decl.h
 
 # AUX_INFO=-aux-info $*.X
 %.o: %.c $(DECL)
@@ -44,16 +44,16 @@
 #CFLAGS        =  -I../gcl-tk -I$(HDIR) $(ODIR_DEBUG) 
 
 
-MP     = $(HDIR)mp.h
+MP     = $(HDIR)/mp.h
 
-CMPINCLUDE_FILES=${HDIR}compbas.h ${HDIR}enum.h ${HDIR}object.h ${HDIR}vs.h \
-       ${HDIR}bds.h ${HDIR}frame.h \
-       ${HDIR}lex.h ${HDIR}eval.h    ${HDIR}funlink.h \
-       ${HDIR}att_ext.h ${HDIR}compbas2.h ${HDIR}/compat.h ${HDIR}/cmponly.h
+CMPINCLUDE_FILES=${HDIR}/compbas.h ${HDIR}/enum.h ${HDIR}/object.h 
${HDIR}/vs.h \
+       ${HDIR}/bds.h ${HDIR}/frame.h \
+       ${HDIR}/lex.h ${HDIR}/eval.h    ${HDIR}/funlink.h \
+       ${HDIR}/att_ext.h ${HDIR}/compbas2.h ${HDIR}/compat.h ${HDIR}/cmponly.h
 
-OTHERS=${HDIR}notcomp.h ${HDIR}rgbc.h ${HDIR}stacks.h 
+OTHERS=${HDIR}/notcomp.h ${HDIR}/rgbc.h ${HDIR}/stacks.h 
 
-HFILES = $(HDIR)include.h $(CMPINCLUDE_FILES) $(OTHERS) 
+HFILES = $(HDIR)/include.h $(CMPINCLUDE_FILES) $(OTHERS) 
 
 # these are made elsewhere...
 MPFILES= 
@@ -115,7 +115,7 @@
        echo '#include "make-decl.h"' > foo.c
        cat ${INI_FILES} >> foo.c
        ${CC} -E -I${HDIR} foo.c | sed -n -e '/#/d' -e '/DO_/d' -e 
'/[a-zA-Z;]/p' > tmpx
-       ../xbin/move-if-changed mv tmpx ${HDIR}new_decl.h
+       ../xbin/move-if-changed mv tmpx ${HDIR}/new_decl.h
 
 $(DECL): $(HDIR)/make-decl.h $(INI_FILES)
        echo '#include "make-decl.h"' > foo.c
Index: o/mingwin.c
===================================================================
RCS file: /cvsroot/gcl/gcl/o/mingwin.c,v
retrieving revision 1.8.6.3
diff -u -r1.8.6.3 mingwin.c
--- o/mingwin.c 3 Jan 2004 03:46:21 -0000       1.8.6.3
+++ o/mingwin.c 5 Jun 2004 17:19:42 -0000
@@ -935,78 +935,6 @@
         if (*p=='\\') *p='/';
         p++;
     }
-    /* grok filename to have only '/' not '\',
-       fix up for cygnus:  /cygdrive/h/   becomes h:/
-       //h/ab and /h/ab become h:/ab
-       and
-       change h:a/b to check what the current directory
-       is on 'h:' and then prepend this to a/b
-       */  
-
-    if ( filename[0] == '/' &&
-         filename[1] == 'c' &&
-         strncmp ( filename, "/cygdrive/", 10 ) == 0 &&
-         filename[11] == '/' ) {
-        /* /cygdrive/... */
-        /*        fprintf ( stderr, "fix_filename: In cygdrive phase\n" );*/
-        filename[9]  = filename[10];
-        filename[10] = ':';
-        filename    += 9;
-    } else {
-        if ( filename[0]=='/' &&
-             filename[1]=='/' &&
-             filename[3]=='/' ) {
-            /* //h/... */
-            /*            fprintf ( stderr, "fix_filename: In // phase\n" );*/
-            filename[1] = filename[2];
-            filename[2] = ':';
-            filename   += 1;
-        } else {
-            if ( filename[0] == '/' &&
-                 filename[2] == '/' &&
-                 isalpha ( filename[1] ) ) {
-                /* /h/... */
-                /*                fprintf ( stderr, "fix_filename: In / 
phase\n" );*/
-                filename[0] = filename[1];
-                filename[1] = ':';
-            }
-        }
-    }
-
-    /* If the drive is just a letter with a colon eg "c:" or "c:hello.txt" it 
needs to
-     * be resolved to the current directory on that device */
-    if ( ( filename[1] == ':' ) && (( strlen ( filename ) == 2 ) || ( 
filename[2] != '/' ) ) ) {
-        char buf[4];
-        int len;
-        /*        fprintf ( stderr, "fix_filename: In current dir fixup 
phase\n" );*/
-        bcopy(filename,buf,2);
-        buf[2]='/';
-        buf[3]=0;
-        getwd(current_directory);
-        len = strlen ( current_directory );
-        strcpy ( directory, filename );
-        strncpy ( filename, current_directory, MAXPATHLEN-1 );
-        filename[len]='/';
-        filename[len+1]='\0';
-        strncat ( filename, directory+2, MAXPATHLEN - 2 - strlen ( 
current_directory ) );
-        filename [MAXPATHLEN-1] = '\0';
-        filename = filename1;
-        p = filename;
-        while ( *p ) {
-            if (*p=='\\') *p='/';
-            p++;
-        }
-    }
-
-    /* move the name back to beginning of buffer */
-    if ( filename > filename1 ) {
-        while ( *filename ) {
-           *filename1++ = *filename++;
-        }
-        *filename1=0;
-    }
-    /*    fprintf ( stderr, "fix_filename: At end %s\n", filename1 );*/
-
 }
 
 
=============================================================================


Mike Thomas <address@hidden> writes:

> 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.
> 
> 
> 
> 

-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

[Prev in Thread] Current Thread [Next in Thread]