diff options
author | Ludovic Courtès <ludo@gnu.org> | 2009-10-02 10:26:30 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2009-10-02 10:28:51 +0200 |
commit | 5b2f2c75527c5899648eec46c7eca0f57420ff3b (patch) | |
tree | 0244084cae3f4d0c88fb99f5bf971ee9d6036398 /libguile/eval.i.c | |
parent | 187a43907f75265b504116aa1e96b40d57f4aa88 (diff) | |
download | guile-5b2f2c75527c5899648eec46c7eca0f57420ff3b.tar.gz |
Fix the argument list of gsubr stack frames.
This fixes a bug introduced in e20d7001c3f7150400169fecb0bf0eefdf122fe2
and reported by Neil.
* libguile/eval.i.c (CEVAL)[DEVAL]: Don't duplicate ARG1 in
`debug.info->a.args' for gsubr stack frames.
(scm_apply): Likewise.
* test-suite/tests/eval.test ("stacks")["arguments of a gsubr stack
frame"]: New test.
Diffstat (limited to 'libguile/eval.i.c')
-rw-r--r-- | libguile/eval.i.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libguile/eval.i.c b/libguile/eval.i.c index 25abf6cb9..1d1c1807f 100644 --- a/libguile/eval.i.c +++ b/libguile/eval.i.c @@ -1259,7 +1259,7 @@ dispatch: RETURN (SCM_SMOB_APPLY_1 (proc, arg1)); case scm_tc7_gsubr: #ifdef DEVAL - debug.info->a.args = scm_cons (arg1, debug.info->a.args); + debug.info->a.args = debug.info->a.args; debug.info->a.proc = proc; #endif RETURN (scm_i_gsubr_apply (proc, arg1, SCM_UNDEFINED)); @@ -1896,7 +1896,7 @@ tail: #ifdef DEVAL args = (SCM_UNBNDP(arg1) ? SCM_EOL : debug.vect[0].a.args); debug.vect[0].a.proc = proc; - debug.vect[0].a.args = scm_cons (arg1, args); + debug.vect[0].a.args = args; #else args = (SCM_UNBNDP(arg1) ? SCM_EOL : scm_cons (arg1, args)); #endif |