From: Robert D. <rob...@us...> - 2008-09-13 17:29:06
|
Update of /cvsroot/maxima/maxima/src In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv27048/src Modified Files: grind.lisp Log Message: Do not attempt list operations on unless/while expression if argument is not a list. This fixes a bug reported to the mailing list: 1-d display of for-loop with unless condition being a symbol causes an error. e.g.: grind('(for x in [1, 2, 3] unless found do print(x))) or: grind('(for x thru 10 unless found do print(x))) Index: grind.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/grind.lisp,v retrieving revision 1.36 retrieving revision 1.37 diff -u -d -r1.36 -r1.37 --- grind.lisp 27 Jul 2008 07:04:09 -0000 1.36 +++ grind.lisp 13 Sep 2008 17:28:59 -0000 1.37 @@ -523,7 +523,7 @@ ((fifth x) `($next ,(fifth x)))) (cond ((sixth x) `($thru ,(sixth x)))) (cond ((null (seventh x)) nil) - ((eq 'mnot (caar (seventh x))) + ((and (consp (seventh x)) (eq 'mnot (caar (seventh x)))) `($while ,(cadr (seventh x)))) (t `($unless ,(seventh x)))) `($do ,(eighth x)))) @@ -532,7 +532,7 @@ (nconc `($for ,(second x) $in ,(third x)) (cond ((sixth x) `($thru ,(sixth x)))) (cond ((null (seventh x)) nil) - ((eq 'mnot (caar (seventh x))) + ((and (consp (seventh x)) (eq 'mnot (caar (seventh x)))) `($while ,(cadr (seventh x)))) (t `($unless ,(seventh x)))) `($do ,(eighth x)))) |