X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Finit.lisp;h=249e2acc2d6628cb41eac24e345c1d097d32585c;hb=d7eeed8e500932c38cd2c7d22ea1ff9630d2f7c8;hp=912c197dc8561908b64fbae832f2321321aa8333;hpb=203b88cf40ed2e15ec0f36dc53ad188b091d9ab2;p=sbcl.git diff --git a/src/pcl/init.lisp b/src/pcl/init.lisp index 912c197..249e2ac 100644 --- a/src/pcl/init.lisp +++ b/src/pcl/init.lisp @@ -130,14 +130,12 @@ unless (initialize-slot-from-initarg class instance slotd) collect slotd))) (dolist (slotd initfn-slotds) - (if (eq (slot-definition-allocation slotd) :class) - (when (or (eq t slot-names) - (memq (slot-definition-name slotd) slot-names)) - (unless (slot-boundp-using-class class instance slotd) - (initialize-slot-from-initfunction class instance slotd))) - (when (or (eq t slot-names) - (memq (slot-definition-name slotd) slot-names)) - (initialize-slot-from-initfunction class instance slotd))))) + (unless (eq (slot-definition-allocation slotd) :class) + ;; :ALLOCATION :CLASS slots use the :INITFORM when class is defined + ;; or redefined, not when instances are allocated. + (when (or (eq t slot-names) + (memq (slot-definition-name slotd) slot-names)) + (initialize-slot-from-initfunction class instance slotd))))) instance)) ;;; If initargs are valid return nil, otherwise signal an error.