if (numargs >= subr->min_args)
{
/* Conforming call to finite-arity subr. */
- if (numargs <= subr->max_args
- && subr->max_args <= 8)
+ ptrdiff_t maxargs = subr->max_args;
+ if (numargs <= maxargs && maxargs <= 8)
{
Lisp_Object argbuf[8];
Lisp_Object *a;
- if (numargs < subr->max_args)
+ if (numargs < maxargs)
{
- eassume (subr->max_args <= ARRAYELTS (argbuf));
+ eassume (maxargs <= ARRAYELTS (argbuf));
a = argbuf;
memcpy (a, args, numargs * word_size);
- memclear (a + numargs, (subr->max_args - numargs) * word_size);
+ memclear (a + numargs, (maxargs - numargs) * word_size);
}
else
a = args;
- switch (subr->max_args)
+ switch (maxargs)
{
case 0:
return subr->function.a0 ();
case 8:
return subr->function.a8 (a[0], a[1], a[2], a[3], a[4], a[5],
a[6], a[7]);
- default:
- emacs_abort (); /* Can't happen. */
}
+ eassume (false); /* In case the compiler is too stupid. */
}
/* Call to n-adic subr. */
- if (subr->max_args == MANY
- || subr->max_args > 8)
+ if (maxargs == MANY || maxargs > 8)
return subr->function.aMANY (numargs, args);
}