X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fdefboot.lisp;h=43ad076d5cbe0f3923e28a510ea84e43e34f7d97;hb=3fe0010d2777b41e01ea9b4a0f894cfa40f7df1b;hp=c505819bd5c80ba000cf4bef391862e64b2055ec;hpb=1b83f8f5a9c75b01993eadbcd564a4dd2c349b5e;p=sbcl.git diff --git a/src/code/defboot.lisp b/src/code/defboot.lisp index c505819..43ad076 100644 --- a/src/code/defboot.lisp +++ b/src/code/defboot.lisp @@ -50,7 +50,13 @@ (defmacro-mundanely multiple-value-setq (vars value-form) (unless (list-of-symbols-p vars) (error "Vars is not a list of symbols: ~S" vars)) - `(values (setf (values ,@vars) ,value-form))) + ;; MULTIPLE-VALUE-SETQ is required to always return just the primary + ;; value of the value-from, even if there are no vars. (SETF VALUES) + ;; in turn is required to return as many values as there are + ;; value-places, hence this: + (if vars + `(values (setf (values ,@vars) ,value-form)) + `(values ,value-form))) (defmacro-mundanely multiple-value-list (value-form) `(multiple-value-call #'list ,value-form))