# HG changeset patch # User Stefan Monnier # Date 1050778736 0 # Node ID 0c4bf42e65576f4144cb2ded42306f286aaa695c # Parent da94760ca8cb1cb6e7a06eb570fb5abc17fe4263 (Fapply): Undo last change and add a comment about why. diff -r da94760ca8cb -r 0c4bf42e6557 src/eval.c --- a/src/eval.c Sat Apr 19 04:23:45 2003 +0000 +++ b/src/eval.c Sat Apr 19 18:58:56 2003 +0000 @@ -2161,7 +2161,7 @@ register Lisp_Object spread_arg; register Lisp_Object *funcall_args; Lisp_Object fun; - int nvars; + struct gcpro gcpro1; fun = args [0]; funcall_args = 0; @@ -2201,7 +2201,8 @@ * sizeof (Lisp_Object)); for (i = numargs; i < XSUBR (fun)->max_args;) funcall_args[++i] = Qnil; - nvars = 1 + XSUBR (fun)->max_args; + GCPRO1 (*funcall_args); + gcpro1.nvars = 1 + XSUBR (fun)->max_args; } } funcall: @@ -2211,7 +2212,8 @@ { funcall_args = (Lisp_Object *) alloca ((1 + numargs) * sizeof (Lisp_Object)); - nvars = 1 + numargs; + GCPRO1 (*funcall_args); + gcpro1.nvars = 1 + numargs; } bcopy (args, funcall_args, nargs * sizeof (Lisp_Object)); @@ -2224,7 +2226,8 @@ spread_arg = XCDR (spread_arg); } - return Ffuncall (nvars, funcall_args); + /* By convention, the caller needs to gcpro Ffuncall's args. */ + RETURN_UNGCPRO (Ffuncall (gcpro1.nvars, funcall_args)); } /* Run hook variables in various ways. */