[Ecls-list] bug in safe-eval?
Nils Bruin
nbruin at cecm.sfu.ca
Sat Sep 12 05:38:45 UTC 2009
Does si::safe-eval do what it is supposed to do?
Compare:
> (si::safe-eval '10 nil 100)
100
> (si::safe-eval '10 nil)
10
--- I think the problem is in top.lsp:
I'm not very good at reading LISP, so I may interpret the code wrong, but:
(defun safe-eval (form env &optional (err-value nil err-value-p))
(let ((output nil) (ok nil))
(unwind-protect
(if err-value-p
(let ((*break-enable* nil))
(si::eval-with-env form env))
(handler-bind ((serious-condition #'invoke-debugger))
(setf output (si::eval-with-env form env)
ok t)))
(return-from safe-eval (if ok output err-value)))))
so it looks to me that if err-value-p is true (i.e., err-value is
supplied), then "ok" never gets set to t.
More information about the ecl-devel
mailing list