diff --git a/pcl/braid.lisp b/pcl/braid.lisp
index 3684dea55540d79e063737fe3841130f01fc020a..ba7e99e0e61e157c61205e8cbd05450670d32b66 100644
--- a/pcl/braid.lisp
+++ b/pcl/braid.lisp
@@ -25,7 +25,7 @@
 ;;; *************************************************************************
 
 (file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/braid.lisp,v 1.39 2003/05/13 10:16:59 gerd Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/braid.lisp,v 1.40 2003/05/13 10:49:01 gerd Exp $")
 
 ;;;
 ;;; Bootstrapping the meta-braid.
@@ -548,7 +548,8 @@
 		 (let ((form-or-fn (conditions::condition-slot-initform slot)))
 		   (if (functionp form-or-fn)
 		       `(:initfunction ,form-or-fn)
-		       `(:initform ,form-or-fn))))
+		       `(:initform ,form-or-fn
+			 :initfunction ,(lambda () form-or-fn)))))
 	     :allocation ,(conditions::condition-slot-allocation slot)
 	     :documentation ,(conditions::condition-slot-documentation slot))))
     (cond ((structure-type-p name)
diff --git a/pcl/ctor.lisp b/pcl/ctor.lisp
index 96234d8ed6b6214efaea5f922943a1e7254c629c..1e16202a2c46d5e14ddf7b0637bd79e905897ea8 100644
--- a/pcl/ctor.lisp
+++ b/pcl/ctor.lisp
@@ -46,7 +46,7 @@
 ;;; is called.
 
 (file-comment
- "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/ctor.lisp,v 1.11 2003/05/13 10:16:59 gerd Exp $")
+ "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/ctor.lisp,v 1.12 2003/05/13 10:49:01 gerd Exp $")
 
 (in-package "PCL")
 
@@ -286,7 +286,8 @@
     ;; MAKE-INSTANCE and/or ALLOCATE-INSTANCE, these will show up
     ;; together with the system-defined ones in what
     ;; COMPUTE-APPLICABLE-METHODS returns.
-    (or (and (null (cdr make-instance-methods))
+    (or (and (not (condition-class-p class))
+	     (null (cdr make-instance-methods))
 	     (null (cdr allocate-instance-methods))
 	     (null (check-initargs class (plist-keys (ctor-initargs ctor))
 				   (append ii-methods si-methods) nil nil))
diff --git a/pcl/slots.lisp b/pcl/slots.lisp
index bdad9c7dd0a2bda6e89929ed96d79f5feff739b7..ff888467a152a284e7bbd2a204d5c03a6c47939a 100644
--- a/pcl/slots.lisp
+++ b/pcl/slots.lisp
@@ -26,7 +26,7 @@
 ;;;
 
 (file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/slots.lisp,v 1.23 2003/05/11 11:30:34 gerd Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/slots.lisp,v 1.24 2003/05/13 10:49:01 gerd Exp $")
 ;;;
 
 (in-package :pcl)
@@ -338,3 +338,6 @@
 	(error "~@<Can't allocate an instance of class ~S.~@:>"
 	       (class-name class)))))
 
+(defmethod allocate-instance ((class condition-class) &rest initargs &key)
+  (declare (ignore initargs))
+  (make-condition (class-name class)))