On Sun, Jan 7, 2018 at 10:36 AM, Stefan Monnier wrote: >> --- a/src/callint.c >> +++ b/src/callint.c >> @@ -357,9 +357,7 @@ invoke it. If KEYS is omitted or nil, the return value of >> /* Compute the arg values using the user's expression. */ >> specs = Feval (specs, >> CONSP (funval) && EQ (Qclosure, XCAR (funval)) >> - ? CAR_SAFE (XCDR (funval)) >> - : COMPILEDP (funval) && INTEGERP (AREF (funval, COMPILED_ARGLIST)) >> - ? Qt : Qnil); >> + ? CAR_SAFE (XCDR (funval)) : Qnil); > Why? This looks wrong. Hmm, I just reverted to the previous code without actually thinking about it. But after checking this more closely, I find that passing non-nil LEXICAL to `eval' doesn't really do anything for compiled functions anyway: the "lexicalness" has already been applied when compiling. E.g., the above change has no effect on the attached tests.