X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-defstruct.lisp;h=f397731344aa93cacd07452c8a46e427cac4fc66;hb=cc67baa3070a13bd84bb37680761011e689fb917;hp=89ced391872bce44bc1c1b592af15538bd512786;hpb=9c9d6dbdc28a8bfe70be09f35263e9ec02411d0e;p=sbcl.git diff --git a/src/code/target-defstruct.lisp b/src/code/target-defstruct.lisp index 89ced39..f397731 100644 --- a/src/code/target-defstruct.lisp +++ b/src/code/target-defstruct.lisp @@ -394,7 +394,7 @@ ;; all this with %RAW-INSTANCE-REF/WORD and bitwise comparisons, but ;; that'll fail in some cases. For example -0.0 and 0.0 are EQUALP ;; but have different bit patterns. -- JES, 2007-08-21 - (loop with i = -1 + (loop with i = 0 for dsd in (dd-slots (layout-info layout)) for raw-type = (dsd-raw-type dsd) for rsd = (when raw-type @@ -404,10 +404,10 @@ for accessor = (when rsd (raw-slot-data-accessor-name rsd)) always (or (not accessor) - (progn - (incf i) - (equalp (funcall accessor x i) - (funcall accessor y i)))))) + (prog1 + (equalp (funcall accessor x i) + (funcall accessor y i)) + (incf i (raw-slot-data-n-words rsd)))))) ;;; default PRINT-OBJECT method