[comp.lang.lisp.x] This month's XLISP 2.x bug...

toma@sail.LABS.TEK.COM (Tom Almy) (02/14/91)

The latest bug fix for XLISP 2.x:

Problem: The environment is not properly restored when a return is executed
   within a DOLIST or DOTIMES form.

Example: (prog ((x 10)) 
               (dotimes (x 10) (return nil)) 
               (print x))

   will print "0"

Solution: In file xlcont.c, functions xdolist() and xdotimes(), move
the lines,

	/* unbind the arguments */
	xlenv = cdr(xlenv);

out of the else statement (just before the following "xlend(&cntxt)".

-- 
Tom Almy
toma@sail.labs.tek.com
Standard Disclaimers Apply