draw: avoid lisp error when region's expr doesn't evaluate to boolean
commit48e32d4f4395acc40895bf6bc7a6f0d9810a5492
authorKris Katterjohn <katterjohn@gmail.com>
Wed, 16 Nov 2022 23:57:42 +0000 (16 18:57 -0500)
committerKris Katterjohn <katterjohn@gmail.com>
Wed, 16 Nov 2022 23:57:42 +0000 (16 18:57 -0500)
treebd9fdc1a638bbeb6807f56f5e5d315dbd7d828ba
parent4909fe5f4dad99cff6cc48acb7a28dcfd13192f0
draw: avoid lisp error when region's expr doesn't evaluate to boolean

This is an old bug in draw (seen while testing in Maxima 5.40 but the
problematic code is in much older versions).

When the expression given to region doesn't evaluate to a boolean, a
lisp type error could occur (implementation-dependent).  If no type
error occurred (e.g. with clisp) then the results were bogus.

(%i1) draw2d(region(1,x,-1,1,y,-1,1));
<lisp error (sbcl) or wrong plot (clisp)>

Now we bind prederror to true when evaluating these expressions.
This gives a Maxima error about the failed evaluation instead of a
lisp error or wrong result.  This is consistent with the check that
already exists in region which signals a Maxima error when an
undefined variable is seen in the expression.

(In the local function BIPART, a failed evaluation would also yield
incorrect results without causing a type error.  This is also fixed
by binding prederror to true.)

No problems with the test suite, share test suite, rtest_draw or other
manual testing.
share/draw/gnuplot.lisp