Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site Shasta.ARPA Path: utzoo!watmath!clyde!burl!ulysses!gamma!epsilon!zeta!sabre!bellcore!decvax!decwrl!Shasta!pallas From: pallas@Shasta.ARPA Newsgroups: net.lang.lisp,net.sources.bugs,net.micro Subject: XLISP bug and fix Message-ID: <5682@Shasta.ARPA> Date: Fri, 24-May-85 14:34:47 EDT Article-I.D.: Shasta.5682 Posted: Fri May 24 14:34:47 1985 Date-Received: Sun, 26-May-85 00:47:43 EDT Organization: Stanford University Lines: 50 Xref: watmath net.lang.lisp:462 net.sources.bugs:336 net.micro:10510 A rather serious bug in XLISP causes it to get scrambled if a garbage collection occurs at the wrong time. The following fix, provided by the author, cures the problem. From decvax!sii!has70!betz@decwrl.ARPA Fri May 17 03:08:00 1985 Received: by decwrl.ARPA (4.22.01/4.7.34) id AA12347; Fri, 17 May 85 03:06:46 pdt From: decvax!sii!has70!betz@decwrl.ARPA Message-Id: <8505171006.AA12347@decwrl.ARPA> Date: Fri, 17 May 85 02:36:06 edt Apparently-To: decwrl!pallas@su-shasta.arpa Status: RO Try making the following changes to XLEVAL,XLCONT,XLOBJ in every place where the variable 'oldnewenv' is mentioned: /* note that this is a 'NODE' not a 'NODE *' */ NODE ... ,oldnewenv, ...; . . . oldstk = xlsave( ... ,&oldnewenv, ... ,NULL); . . . oldnewenv.n_ptr = xlnewenv; . . . xlnewenv = oldnewenv.n_ptr; I did this change on the version of XLISP that I am running on a VAX-11/750 under VMS version 4.1 and it seems to have fixed the problem that you were refering to. Sorry about this problem, David Betz ------- Note -- there is at least one place where the call to xlsave comes AFTER the saving of xlnewenv. You must reverse this order, as xlsave will wipe out the pointer. joe