Skip to content
Snippets Groups Projects
Commit 7348bfc2 authored by rtoy's avatar rtoy
Browse files

Extra values were not correctly handled by the values setf expander.

This causes

  (let ((a t) (b t) (c t) (d t) (e t) (f t))
    (setf (values a (values b c) (values d) (values e f)) (values 0 1 2 3 4 5 6))
    (list a b c d e f))

to return the (0 1 2 3 4 5) instead of (0 1 nil 2 3 nil).
parent 2ecccad7
No related branches found
No related tags found
No related merge requests found
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
;;; Carnegie Mellon University, and has been placed in the public domain. ;;; Carnegie Mellon University, and has been placed in the public domain.
;;; ;;;
(ext:file-comment (ext:file-comment
"$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/macros.lisp,v 1.100 2004/05/18 13:43:08 rtoy Exp $") "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/macros.lisp,v 1.101 2004/06/29 20:44:40 rtoy Exp $")
;;; ;;;
;;; ********************************************************************** ;;; **********************************************************************
;;; ;;;
...@@ -1257,9 +1257,12 @@ ...@@ -1257,9 +1257,12 @@
(dolist (place places) (dolist (place places)
(multiple-value-bind (dummies vals newval setter getter) (multiple-value-bind (dummies vals newval setter getter)
(get-setf-expansion place env) (get-setf-expansion place env)
(setf all-dummies (append all-dummies dummies)) ;; ANSI CL 5.1.2.3 explains that extra places are set to
(setf all-vals (append all-vals vals)) ;; nil.
(setf newvals (append newvals newval)) (setf all-dummies (append all-dummies dummies (cdr newval)))
(setf all-vals (append all-vals vals
(mapcar (constantly nil) (cdr newval))))
(setf newvals (append newvals (list (car newval))))
(setters setter) (setters setter)
(getters getter))) (getters getter)))
(values all-dummies all-vals newvals (values all-dummies all-vals newvals
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment