diff options
Diffstat (limited to 'libguile/procs.c')
-rw-r--r-- | libguile/procs.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/libguile/procs.c b/libguile/procs.c index e9ba44f08..65331edb8 100644 --- a/libguile/procs.c +++ b/libguile/procs.c @@ -73,7 +73,7 @@ SCM scm_make_subr_opt (const char *name, int type, SCM (*fcn) (), int set) { SCM symbol; - SCM symcell; + SCM var; register SCM z; int entry; @@ -89,17 +89,14 @@ scm_make_subr_opt (const char *name, int type, SCM (*fcn) (), int set) scm_subr_table_room = new_size; } + symbol = scm_str2symbol (name); + SCM_NEWCELL (z); if (set) - { - symcell = scm_sysintern (name, SCM_UNDEFINED); - symbol = SCM_CAR (symcell); - } + var = scm_sym2var (symbol, scm_current_module_lookup_closure (), + SCM_BOOL_T); else - { - symcell = SCM_BOOL_F; /* to avoid warning */ - symbol = scm_str2symbol (name); - } + var = SCM_BOOL_F; entry = scm_subr_table_size; scm_subr_table[entry].handle = z; @@ -112,7 +109,7 @@ scm_make_subr_opt (const char *name, int type, SCM (*fcn) (), int set) scm_subr_table_size++; if (set) - SCM_SETCDR (symcell, z); + SCM_VARIABLE_SET (var, z); return z; } |