X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fstd-class.lisp;h=d03f94ebf9f71ce15a702fa164d9f0d1169fc53c;hb=fb9c34275389e23f32d80954ab4848fac48936d9;hp=b9c034e042091e9a53ff07575f8e39d0dafa7633;hpb=88746ab4e00faaccb148e9603181df62bc1060d3;p=sbcl.git diff --git a/src/pcl/std-class.lisp b/src/pcl/std-class.lisp index b9c034e..d03f94e 100644 --- a/src/pcl/std-class.lisp +++ b/src/pcl/std-class.lisp @@ -1291,7 +1291,14 @@ (with-pcl-lock (update-lisp-class-layout class nwrapper) (setf (slot-value class 'wrapper) nwrapper) - (invalidate-wrapper owrapper :flush nwrapper)))))) + ;; Use :OBSOLETE instead of :FLUSH if any superclass has + ;; been obsoleted. + (if (find-if (lambda (x) + (and (consp x) (eq :obsolete (car x)))) + (layout-inherits owrapper) + :key #'layout-invalid) + (invalidate-wrapper owrapper :obsolete nwrapper) + (invalidate-wrapper owrapper :flush nwrapper))))))) (defun flush-cache-trap (owrapper nwrapper instance) (declare (ignore owrapper))