diff --git a/libguile/ChangeLog b/libguile/ChangeLog index e7ca4f1df..23e8dd504 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,12 @@ +2000-03-21 Dirk Herrmann + + * symbols.h, symbols.c (scm_strhash): Declare the string + parameter as constant, since it is not modified. + + * symbols.c (scm_intern_obarray_soft, + scm_sysintern0_no_module_lookup): Can now pass constant strings + to scm_strhash without need for casting. + 2000-03-21 Dirk Herrmann * vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS): Don't cast SCM diff --git a/libguile/symbols.c b/libguile/symbols.c index 776f2f3e1..47daadfc5 100644 --- a/libguile/symbols.c +++ b/libguile/symbols.c @@ -77,7 +77,7 @@ unsigned long -scm_strhash (unsigned char *str,scm_sizet len,unsigned long n) +scm_strhash (const unsigned char *str, scm_sizet len, unsigned long n) { if (len > 5) { @@ -237,16 +237,13 @@ scm_intern_obarray_soft (const char *name,scm_sizet len,SCM obarray,int softness SCM_REDEFER_INTS; - i = len; - tmp = (unsigned char *) name; - if (obarray == SCM_BOOL_F) { - scm_hash = scm_strhash (tmp, i, 1019); + scm_hash = scm_strhash (name, len, 1019); goto uninterned_symbol; } - scm_hash = scm_strhash (tmp, i, SCM_LENGTH(obarray)); + scm_hash = scm_strhash (name, len, SCM_LENGTH (obarray)); /* softness == -1 used to mean that it was known that the symbol wasn't already in the obarray. I don't think there are any @@ -359,8 +356,7 @@ scm_sysintern0_no_module_lookup (const char *name) { SCM lsym; scm_sizet len = strlen (name); - register unsigned char *tmp = (unsigned char *) name; - scm_sizet scm_hash = scm_strhash (tmp, len, (unsigned long) scm_symhash_dim); + scm_sizet scm_hash = scm_strhash (name, len, (unsigned long) scm_symhash_dim); SCM_NEWCELL (lsym); SCM_SETLENGTH (lsym, (long) len, scm_tc7_ssymbol); SCM_SETCHARS (lsym, name); diff --git a/libguile/symbols.h b/libguile/symbols.h index 8f12f1329..ae51ff494 100644 --- a/libguile/symbols.h +++ b/libguile/symbols.h @@ -109,7 +109,7 @@ extern int scm_symhash_dim; -extern unsigned long scm_strhash (unsigned char *str, scm_sizet len, unsigned long n); +extern unsigned long scm_strhash (const unsigned char *str, scm_sizet len, unsigned long n); extern SCM scm_sym2vcell (SCM sym, SCM thunk, SCM definep); extern SCM scm_sym2ovcell_soft (SCM sym, SCM obarray); extern SCM scm_sym2ovcell (SCM sym, SCM obarray);