debian/changelog: Prepare for next version.
[sod] / src / builtin.lisp
index 776d3a1..d07f539 100644 (file)
@@ -422,19 +422,20 @@ static const SodClass *const ~A__cpl[] = {
                (when (or init initargs)
                  (focus-this-class)
                  (let* ((slot-type (sod-slot-type dslot))
-                        (slot-default (sod-initializer-value init))
                         (target (format nil "~A.~A"
                                         isl (sod-slot-name dslot)))
-                        (initinst (set-from-initializer target
-                                                        slot-type
-                                                        slot-default)))
+                        (initinst (and init
+                                       (set-from-initializer
+                                        target slot-type
+                                        (sod-initializer-value init)))))
 
                    ;; If there are applicable initialization arguments,
                    ;; check to see whether they were supplied.
                    (dolist (initarg (reverse (remove-duplicates
                                               initargs
                                               :key #'sod-initarg-name
-                                              :test #'string=)))
+                                              :test #'string=
+                                              :from-end t)))
                      (let ((arg-name (sod-initarg-name initarg)))
                        (setf initinst (make-if-inst
                                        (format nil "suppliedp.~A" arg-name)