diff --git a/asdf.asd b/asdf.asd
index 1e8a007bf8f97c509932bd2f51a5f1873269e983..d1d64de2320db1054abb603101ef6e6898b74713 100644
--- a/asdf.asd
+++ b/asdf.asd
@@ -14,7 +14,7 @@
   :licence "MIT"
   :description "Another System Definition Facility"
   :long-description "ASDF builds Common Lisp software organized into defined systems."
-  :version "2.21.2" ;; to be automatically updated by bin/bump-revision
+  :version "2.21.3" ;; to be automatically updated by bin/bump-revision
   :depends-on ()
   :components
   ((:file "asdf")
diff --git a/asdf.lisp b/asdf.lisp
index 11ffd167449252f9c2699e7c1a6988fffe25f7da..b58362c47bfe7a74f9e4badcab85ef2df619c2aa 100644
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -1,5 +1,5 @@
 ;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; coding: utf-8 -*-
-;;; This is ASDF 2.21.2: Another System Definition Facility.
+;;; This is ASDF 2.21.3: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
@@ -116,7 +116,7 @@
          ;; "2.345.6" would be a development version in the official upstream
          ;; "2.345.0.7" would be your seventh local modification of official release 2.345
          ;; "2.345.6.7" would be your seventh local modification of development version 2.345.6
-         (asdf-version "2.21.2")
+         (asdf-version "2.21.3")
          (existing-asdf (find-class 'component nil))
          (existing-version *asdf-version*)
          (already-there (equal asdf-version existing-version)))
@@ -2788,6 +2788,11 @@ details."
         directory-pathname
         (default-directory))))
 
+(defun* find-class* (x &optional (errorp t) environment)
+  (etypecase x
+    ((or standard-class built-in-class) x)
+    (symbol (find-class x errorp) environment)))
+
 (defun* class-for-type (parent type)
   (or (loop :for symbol :in (list
                              type
@@ -2799,11 +2804,10 @@ details."
                                  class (find-class 'component)))
         :return class)
       (and (eq type :file)
-           (aif
+           (find-class*
             (or (loop :for module = parent :then (component-parent module) :while module
                   :thereis (module-default-component-class module))
-                *default-component-class*)
-            (find-class it)))
+                *default-component-class*) nil))
       (sysdef-error "don't recognize component type ~A" type)))
 
 (defun* maybe-add-tree (tree op1 op2 c)