From a85d979a2dd6db970815fedfc9bae31f47c55a2e Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 30 Dec 2007 12:10:12 +0000 Subject: [PATCH] fix delayed hashing (especially as needed by MrEd under X11) again svn: r8160 --- src/mzscheme/src/hash.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/mzscheme/src/hash.c b/src/mzscheme/src/hash.c index 53ece3621f..ec250414c3 100644 --- a/src/mzscheme/src/hash.c +++ b/src/mzscheme/src/hash.c @@ -160,9 +160,17 @@ static Scheme_Object *do_hash(Scheme_Hash_Table *table, Scheme_Object *key, int mask = table->size - 1; if (table->make_hash_indices) { - table->make_hash_indices((void *)key, (long *)&h, NULL); + GC_CAN_IGNORE hash_v_t *_h2; + if (table->compare) { + h2 = 0; + _h2 = NULL; + } else + _h2 = &h2; + table->make_hash_indices((void *)key, (long *)&h, (long *)_h2); h = h & mask; - h2 = 0; + if (_h2) { + h2 = (h2 & mask) | 1; + } } else { unsigned long lkey; lkey = (unsigned long)PTR_TO_LONG((Scheme_Object *)key);