This regression was introduced in release 23.1. Prior to that release,
the doc string said, correctly,
"If ARGS is a list whose car is a symbol, use (car ARGS) as a function
to do the work. Pass it BUFFER as first arg, and (cdr ARGS) as the
rest of its args."
Now it says, incorrectly,
"If ARGS is a list whose car is a symbol, use (car ARGS) as a
function to do the work. Pass it BUFFER as first argument,
and (cdr ARGS) as second."
If ARGS is a list whose car is a symbol `f', then
`special-display-popup-frame' invokes `f', passing it as arguments,
BUFFER followed by all of the elements in (cdr ARGS). The arity of `f'
is the length of ARGS, not just 2. We do not pass `f' (cdr ARGS) as a
second argument.