diff --git a/libguile/gc.c b/libguile/gc.c index 5f966acd0..4c0a633f7 100644 --- a/libguile/gc.c +++ b/libguile/gc.c @@ -917,7 +917,7 @@ scm_init_storage () #endif #endif - scm_stand_in_procs = SCM_EOL; + scm_stand_in_procs = scm_c_make_hash_table (257); scm_permobjs = SCM_EOL; scm_protects = scm_c_make_hash_table (31); scm_gc_registered_roots = scm_c_make_hash_table (31); diff --git a/libguile/procprop.c b/libguile/procprop.c index d91c72904..03043890d 100644 --- a/libguile/procprop.c +++ b/libguile/procprop.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1998,2000,2001, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1998,2000,2001,2003,2004 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -28,6 +28,7 @@ #include "libguile/smob.h" #include "libguile/root.h" #include "libguile/vectors.h" +#include "libguile/hashtab.h" #include "libguile/validate.h" #include "libguile/procprop.h" @@ -136,15 +137,15 @@ scm_i_procedure_arity (SCM proc) static SCM scm_stand_in_scm_proc(SCM proc) { - SCM answer; - answer = scm_assq (proc, scm_stand_in_procs); - if (scm_is_false (answer)) + SCM handle, answer; + handle = scm_hashq_get_handle (scm_stand_in_procs, proc); + if (scm_is_false (handle)) { answer = scm_closure (scm_list_2 (SCM_EOL, SCM_BOOL_F), SCM_EOL); - scm_stand_in_procs = scm_acons (proc, answer, scm_stand_in_procs); + scm_hashq_set_x (scm_stand_in_procs, proc, answer); } else - answer = SCM_CDR (answer); + answer = SCM_CDR (handle); return answer; }