Commit ef5a526f1b51b76b0f753e0936c80743a7f4463d fixed a bug in Emacs where the C code passed 10 arguments to a function using the MANY calling convention, but the caller mistakenly passed 8 as the argument count, and this mistakenly discarded the last two arguments; see . To help prevent this sort of mistake in the future, I would like to install something like the attached patch, which uses a new C macro CALLN to count these arguments automatically. The key lines in the patch are the following additions to lisp.h: #define CALLMANY(f, array) (f) (ARRAYELTS (array), array) #define CALLN(f, ...) CALLMANY (f, ((Lisp_Object []) {__VA_ARGS__})) This lets code use 'return CALLN (foo, a, b, c, d);' instead of the current error-prone usages which are like '{ Lisp_Object args[4]; args[0] = a; args[1] = b; args[2] = c; args[3] = d; return foo (3, args); }'. (Oops, that last '3' should have been a '4'....) This patch still needs a ChangeLog entry and some more testing on my part, but I thought I'd get it out for review now.