[net.sources.bugs] XLISP bug and fix

pallas@Shasta.ARPA (05/24/85)

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