setf: pre-defined setf-expanders should handle multiple value places gracefully.
authorAlastair Bridgewater <nyef_sbcl@lisphacker.com>
Thu, 31 Mar 2011 20:00:48 +0000 (16:00 -0400)
committerAlastair Bridgewater <nyef@virtdev-1.lisphacker.com>
Sat, 22 Oct 2011 00:19:36 +0000 (20:19 -0400)
commit3c3006c51658323c44c3cec859838bde3ea6b565
treef0090967a7bd6826eee24ed29ab8d4637dbbee87
parent14dbe4cc37ff6847e14ec90e9a75664bb281be3c
setf: pre-defined setf-expanders should handle multiple value places gracefully.

  * The GETF, LOGBITP, LDB and MASK-FIELD setf-expanders all take a
PLACE argument, the setf-expansion for which was being obtained via
GET-SETF-METHOD, which is the CLtL1 version of GET-SETF-EXPANSION, but
throws an error if a PLACE multiple values.  This also pre-dates the
adoption of VALUES places.

  * The most reasonable interpretation of the spec appears to be that
any values after the first are to be ignored upon reading and set to NIL
upon writing.

  * To do so, change each use to SB!XC:GET-SETF-EXPANSION instead of
GET-SETF-METHOD, and bind any symbols in the list of new value locations
to NIL before invoking the setter form.
NEWS
src/code/early-setf.lisp