“We shouldn't have to use this extra binding, but CFFI's setf expander
for mem-ref does a get-setf-expansion on the
pointer argument to mem-ref. If we quote the pointer
value, Clozure CL returns a bogus expansion whose getter evaluates to
a quoted gensym, presumably because it's defaulting to treating the
compound form as though it were a function call and trying to
reproduce the “call” with its “argument” evaluated once. If we
don't quote the pointer value, then it's not valid to pass
the pointer to get-setf-expansion in the first place, I think, so it
more rightfully bombs. This seems to imply that this is both a CFFI
bug and a Clozure bug, if I'm reading the HyperSpec right.”
I might expand on this in another post later. SBCL actually does the same thing, and I'm not sure if it's required as an weird interaction in the spec, even. Hmm.