Mercurial > emacs
changeset 295:d63a5e102cab
*** empty log message ***
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Mon, 24 Jun 1991 23:22:15 +0000 |
parents | 97aa6a6f9aa5 |
children | 558b874b5259 |
files | src/eval.c src/mocklisp.c |
diffstat | 2 files changed, 16 insertions(+), 10 deletions(-) [+] |
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) {
--- a/src/mocklisp.c Thu Jun 20 12:32:05 1991 +0000 +++ b/src/mocklisp.c Mon Jun 24 23:22:15 1991 +0000 @@ -205,6 +205,10 @@ { register int argnum; register Lisp_Object tem; + struct gcpro gcpro1; + + GCPRO1 (*args); + gcpro1.nvars = nargs; for (argnum = 0; argnum < nargs; argnum++) { @@ -220,6 +224,8 @@ goto retry; } } + + UNGCPRO; return Qnil; }