Mercurial > emacs
diff src/eval.c @ 295:d63a5e102cab
*** empty log message ***
| author | Jim Blandy <jimb@redhat.com> |
|---|---|
| date | Mon, 24 Jun 1991 23:22:15 +0000 |
| parents | ce09dc583890 |
| children | 9c2a1e7bd9f1 |
line wrap: on
line diff
--- a/src/eval.c Thu Jun 20 12:32:05 1991 +0000 +++ b/src/eval.c Mon Jun 24 23:22:15 1991 +0000 @@ -1551,7 +1551,6 @@ register int i, numargs; register Lisp_Object spread_arg; register Lisp_Object *funcall_args; - struct gcpro gcpro1; Lisp_Object fun; fun = args [0]; @@ -1614,13 +1613,7 @@ spread_arg = XCONS (spread_arg)->cdr; } - GCPRO1 (*funcall_args); - gcpro1.nvars = numargs + 1; - { - Lisp_Object val = Ffuncall (numargs + 1, funcall_args); - UNGCPRO; - return val; - } + return Ffuncall (numargs + 1, funcall_args); } /* Apply fn to arg */ @@ -1719,8 +1712,15 @@ QUIT; if (consing_since_gc > gc_cons_threshold) - Fgarbage_collect (); - + { + struct gcpro gcpro1; + + /* The backtrace protects the arguments for the rest of the function. */ + GCPRO1 (*args); + gcpro1.nvars = nargs; + Fgarbage_collect (); + UNGCPRO; + } if (++lisp_eval_depth > max_lisp_eval_depth) {
