diff options
Diffstat (limited to 'libguile/debug.c')
-rw-r--r-- | libguile/debug.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/libguile/debug.c b/libguile/debug.c index 20fa8d7c6..42981bfe7 100644 --- a/libguile/debug.c +++ b/libguile/debug.c @@ -426,16 +426,15 @@ SCM_DEFINE (scm_procedure_source, "procedure-source", 1, 0, 0, switch (SCM_TYP7 (proc)) { case scm_tcs_closures: { - SCM src; - src = scm_source_property (SCM_CDR (SCM_CODE (proc)), scm_sym_copy); - if (! SCM_FALSEP (src)) - return scm_cons2 (scm_sym_lambda, SCM_CLOSURE_FORMALS (proc), src); - src = SCM_CODE (proc); + SCM formals = SCM_CLOSURE_FORMALS (proc); + SCM src = scm_source_property (SCM_CDR (SCM_CODE (proc)), scm_sym_copy); + if (!SCM_FALSEP (src)) + return scm_cons2 (scm_sym_lambda, formals, src); return scm_cons (scm_sym_lambda, - scm_unmemocopy (src, - SCM_EXTEND_ENV (SCM_CAR (src), - SCM_EOL, - SCM_ENV (proc)))); + scm_unmemocopy (SCM_CODE (proc), + SCM_EXTEND_ENV (formals, + SCM_EOL, + SCM_ENV (proc)))); } case scm_tcs_subrs: #ifdef CCLO |