summaryrefslogtreecommitdiff
path: root/sb-eval2.lisp
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2013-07-11 16:27:06 +0200
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2013-07-11 16:27:06 +0200
commit6b446b2903a074992a9ddce1395146c58f8a3065 (patch)
treee5db74c2548f05aecca4f246582294f5e304395a /sb-eval2.lisp
parent0b500b929a38d0bd911f1ce211c1b41f0a967743 (diff)
CATCH: Evaluate the tag form.
Diffstat (limited to 'sb-eval2.lisp')
-rw-r--r--sb-eval2.lisp7
1 files changed, 4 insertions, 3 deletions
diff --git a/sb-eval2.lisp b/sb-eval2.lisp
index 3290de8..7da5447 100644
--- a/sb-eval2.lisp
+++ b/sb-eval2.lisp
@@ -199,10 +199,11 @@
finally (return result))))))
((catch)
(destructuring-bind (tag &body body) (rest form)
- (let ((k (prepare-progn body context)))
+ (let ((tag* (prepare-form tag context))
+ (body* (prepare-progn body context)))
(lambda (env)
- (catch tag
- (funcall k env))))))
+ (catch (funcall tag* env)
+ (funcall body* env))))))
((block)
(destructuring-bind (name &body body) (rest form)
(let* ((tag (gensym (concatenate 'string "BLOCK-" (symbol-name name))))