X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Finit.lisp;h=6696bbaac304ff422a8f2cf2f5df44fe9f51db46;hb=d25e3478acccec70402ff32554669a982be8e281;hp=249e2acc2d6628cb41eac24e345c1d097d32585c;hpb=963d8df14dd061d55ed0447acc9c2621a53e5237;p=sbcl.git diff --git a/src/pcl/init.lisp b/src/pcl/init.lisp index 249e2ac..6696bba 100644 --- a/src/pcl/init.lisp +++ b/src/pcl/init.lisp @@ -110,20 +110,17 @@ ;; that slot won't be initialized from its :INITFORM, if any. (let ((initfun (slot-definition-initfunction slotd))) (if (typep instance 'structure-object) - (when (eq (funcall - ;; not SLOT-VALUE-USING-CLASS, as that - ;; throws an error if the value is the - ;; unbound marker. - (slot-definition-internal-reader-function slotd) - instance) - +slot-unbound+) + ;; We don't have a consistent unbound marker for structure + ;; object slots, and structure object redefinition is not + ;; really supported anyways -- so unconditionally + ;; initializing the slot should be fine. + (when initfun (setf (slot-value-using-class class instance slotd) - (when initfun - (funcall initfun)))) + (funcall initfun))) (unless (or (not initfun) (slot-boundp-using-class class instance slotd)) - (setf (slot-value-using-class class instance slotd) - (funcall initfun))))))) + (setf (slot-value-using-class class instance slotd) + (funcall initfun))))))) (let* ((class (class-of instance)) (initfn-slotds (loop for slotd in (class-slots class)