zilla@nyit.UUCP (John Lewis) (10/16/89)
there is a bug in xscheme0.17's (restore) function. the bug is that garbage collection should be inhibited during the main part of xlirestore(). This is because the image is restored in node-array order, rather than obarray order. For example, strings may be restored before the symbols which refer to them, and a gc before the corresponding symbol is restored will remove the string (set its type to FREE). routines called in xlirestore (e.g. getvspace()) can trigger gc. A fix is simply to set a flag inhibiting gc during the main part of xlirestore. dbetz confirmed that this is a reasonable fix.
mikpe@majestix.ida.liu.se (Mikael Pettersson) (05/30/90)
There's a bug in XScheme's <, <=, =, >= and > predicates. Try the following: (= 10 20 30) This should fail with a "bad continuation" message. The problem is in the compare() function [xsmath.c]. It looks roughly as follows: compare(fcn) { ... for(icmp = TRUE; icmp && moreargs(); ..) { /* consume one more argument, compare it (using fcn) * and set icmp to false if the comparison failed */ } return icmp ? true : NIL; } As you can see, if the test fails before all arguments have been consumed, the function will (try to) return, treating the remaining arguments as the continuation... The fix is simply to drop the remaining arguments before returning: drop(xlargc); return icmp ...; /Mike -- Mikael Pettersson, Dept of Comp & Info Sci, University of Linkoping, Sweden email: mpe@ida.liu.se or ...!{mcsun,munnari,uunet,unido,...}!sunic!liuida!mpe