diff --git a/ChangeLog b/ChangeLog index 88de32cd48..7a1a66ca78 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,12 @@ -Sat Sep 1 11:14:38 2007 Nobuyoshi Nakada +Sat Sep 1 14:24:23 2007 Nobuyoshi Nakada * st.c (st_numcmp, st_numhash): use st_data_t instead of long, because the former may be larger than the latter. * include/ruby/st.h (CHAR_BIT): get rid of magic number. - * include/ruby/st.h (struct st_table): num_entries never exceed - num_bins. + * include/ruby/st.h (rb_index_t): use st_data_t for the platforms it + is larger than int. Fri Aug 31 07:12:24 2007 NAKAMURA Usaku diff --git a/include/ruby/st.h b/include/ruby/st.h index 7702c7a8e9..3b64bd72fb 100644 --- a/include/ruby/st.h +++ b/include/ruby/st.h @@ -49,15 +49,14 @@ struct st_hash_type { int (*hash)(ANYARGS /*st_data_t*/); /* st_hash_func* */ }; -typedef unsigned int st_index_t; -#define ST_INDEX_BITS (sizeof(st_index_t) * CHAR_BIT - 1) +typedef st_data_t st_index_t; +#define ST_INDEX_BITS (sizeof(st_index_t) * CHAR_BIT) struct st_table { const struct st_hash_type *type; unsigned int entries_packed : 1; - st_index_t num_bins : ST_INDEX_BITS; - unsigned int st_dummy_bit : 1; - st_index_t num_entries : ST_INDEX_BITS; + st_index_t num_bins : ST_INDEX_BITS - 1; + st_index_t num_entries; struct st_table_entry **bins; struct st_table_entry *head; };