summaryrefslogtreecommitdiff
path: root/libguile/procprop.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2013-10-31 12:52:23 +0100
committerAndy Wingo <wingo@pobox.com>2013-10-31 12:55:24 +0100
commit30b7cf9df0f51bc2a3553396dc368c197eab4d8d (patch)
treeeac9a77340ee120423d4abea40856a744f64942b /libguile/procprop.c
parent6165d8120d5973ea177514d0632247e1d38904ee (diff)
downloadguile-30b7cf9df0f51bc2a3553396dc368c197eab4d8d.tar.gz
Avoid calling procedure-name when doing a make-procedure-with-setter
* libguile/procs.c (scm_make_procedure_with_setter): Don't set the name of the procedure. Instead rely on procedure-name to look it up from the wrapped procedure as needed. * libguile/procprop.c (scm_procedure_name): If there was no override and the procedure is a procedure-with-setter, recurse on the procedure.
Diffstat (limited to 'libguile/procprop.c')
-rw-r--r--libguile/procprop.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/libguile/procprop.c b/libguile/procprop.c
index 78a40c1e2..9965b451a 100644
--- a/libguile/procprop.c
+++ b/libguile/procprop.c
@@ -249,9 +249,6 @@ SCM_DEFINE (scm_procedure_name, "procedure-name", 1, 0, 0,
SCM_VALIDATE_PROC (1, proc);
- while (SCM_STRUCTP (proc) && SCM_STRUCT_APPLICABLE_P (proc))
- proc = SCM_STRUCT_PROCEDURE (proc);
-
user_props = scm_weak_table_refq (overrides, proc, SCM_BOOL_F);
if (scm_is_true (user_props))
{
@@ -266,6 +263,8 @@ SCM_DEFINE (scm_procedure_name, "procedure-name", 1, 0, 0,
return scm_i_rtl_program_name (proc);
else if (SCM_PROGRAM_P (proc))
return scm_assq_ref (scm_i_program_properties (proc), scm_sym_name);
+ else if (SCM_STRUCTP (proc) && SCM_STRUCT_APPLICABLE_P (proc))
+ return scm_procedure_name (SCM_STRUCT_PROCEDURE (proc));
else
return SCM_BOOL_F;
}