0.8.0.78.vector-nil-string.10:
[sbcl.git] / src / compiler / macros.lisp
index 1dd4bbc..fd533a0 100644 (file)
@@ -54,7 +54,8 @@
     (multiple-value-bind (body decls doc)
        (parse-defmacro lambda-list n-form body name "special form"
                        :environment n-env
-                       :error-fun 'convert-condition-into-compiler-error)
+                       :error-fun 'convert-condition-into-compiler-error
+                        :wrap-block nil)
       `(progn
         (declaim (ftype (function (continuation continuation t) (values))
                         ,fn-name))
                        :error-fun `(lambda (&rest stuff)
                                      (declare (ignore stuff))
                                      (return-from ,name
-                                       (values nil t))))
+                                       (values nil t)))
+                        :wrap-block nil)
       `(lambda (,n-form &aux (,n-env *lexenv*))
          ,@decls
          (block ,name
          (declare (type node ,node-var))
         ,@body
         (when ,(if restart-p
-                   `(eq ,node-var (block-last ,n-block))
+                   `(or (eq ,node-var (block-last ,n-block))
+                         (block-delete-p ,n-block))
                    `(eq ,cont-var ,n-last-cont))
           (return nil))))))
 ;;; like DO-NODES, only iterating in reverse order