Index: /trunk/source/level-1/l1-error-system.lisp
===================================================================
--- /trunk/source/level-1/l1-error-system.lisp	(revision 15302)
+++ /trunk/source/level-1/l1-error-system.lisp	(revision 15303)
@@ -662,9 +662,14 @@
    associated with that condition (or with no condition) will be
    returned."
-  (dolist (cluster %restarts%)
-    (dolist (restart cluster)
-      (when (and (or (eq restart name) (eq (restart-name restart) name))
-                 (applicable-restart-p restart condition))
-	(return-from find-restart restart)))))
+  (if (typep name 'restart)
+    (dolist (cluster %restarts%)
+      (dolist (restart cluster)
+        (if (eq restart name)
+          (return-from find-restart restart))))
+    (dolist (cluster %restarts%)
+      (dolist (restart cluster)
+        (when (and (eq (restart-name restart) name)
+                   (applicable-restart-p restart condition))
+          (return-from find-restart restart))))))
 
 (defun %active-restart (name)
@@ -672,8 +677,7 @@
     (dolist (restart cluster)
       (when (or (eq restart name)
-                (let* ((rname (%restart-name restart))
-                       (rtest (%restart-test restart)))
+                (let* ((rname (%restart-name restart)))
                   (and (eq rname name)
-                       (or (null rtest) (funcall rtest nil)))))
+                       (applicable-restart-p restart nil))))
                 (return-from %active-restart (values restart cluster)))))
   (error 'inactive-restart :restart-name name))
@@ -704,5 +708,5 @@
    necessary arguments. If the argument restart is not a restart or a
    currently active non-NIL restart name, then a CONTROL-ERROR is signalled."
-  (let* ((restart (find-restart restart)))
+  (let* ((restart (%active-restart restart)))
     (format *error-output* "~&Invoking restart: ~a~&" restart)
     (let* ((argfn (%restart-interactive restart))
