From: Mark Wooding Date: Sat, 3 Aug 2019 14:55:03 +0000 (+0100) Subject: src/builtin.lisp: Don't assume we have an initializer if there are initargs. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/commitdiff_plain/5568c760e5a2062815fc4b71735bc33383db88da src/builtin.lisp: Don't assume we have an initializer if there are initargs. This caused an ugly crash with the text class Foo: SodObject { [initarg = x] int x; } --- diff --git a/src/builtin.lisp b/src/builtin.lisp index 776d3a1..08ad5f0 100644 --- a/src/builtin.lisp +++ b/src/builtin.lisp @@ -422,12 +422,12 @@ (default (argument-default arg)) (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.