Index: /branches/ide-1.0/ccl/lib/macros.lisp
===================================================================
--- /branches/ide-1.0/ccl/lib/macros.lisp	(revision 6679)
+++ /branches/ide-1.0/ccl/lib/macros.lisp	(revision 6680)
@@ -2474,11 +2474,14 @@
       (if error-return
         (let* ((cond (gensym))
-               (block (gensym)))
-          `(block ,block (handler-bind ((,condition-name
-                                         (lambda (,cond)
+               (block (gensym))
+               (handler (gensym)))
+          `(block ,block
+            (let* ((,handler (lambda (,cond)
                                            (,error-return-function ,cond ,stack-ptr (%inc-ptr ,stack-ptr ,error-delta))
                                            (return-from ,block
                                              nil))))
-                           ,body)))
+              (declare (dynamic-extent ,handler))
+            (handler-bind ((,condition-name ,handler))
+                           ,body))))
         body))))
 
