From 60c25caa64235ebc82f4684df8759811700da03c Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sat, 29 May 2010 09:17:27 -0700 Subject: [PATCH] Make sure we never try to store a 0 key and tweak key64 init. --- hashtable.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hashtable.c b/hashtable.c index 219210de..ea858fb7 100644 --- a/hashtable.c +++ b/hashtable.c @@ -41,7 +41,7 @@ struct hashtable *hashtable_create(int size, int key64) tbl->size = size; tbl->entries = 0; tbl->node_size = node_size; - tbl->key64 = (short)key64; + tbl->key64 = key64 ? 1 : 0; if (DEBUG_GTE(HASH, 1)) { char buf[32]; @@ -74,6 +74,11 @@ void *hashtable_find(struct hashtable *tbl, int64 key, int allocate_if_missing) struct ht_int32_node *node; uint32 ndx; + if (key64 ? key == 0 : (int32)key == 0) { + rprintf(FERROR, "Internal hashtable error: illegal key supplied!\n"); + exit_cleanup(RERR_MESSAGEIO); + } + if (allocate_if_missing && tbl->entries > HASH_LOAD_LIMIT(tbl->size)) { void *old_nodes = tbl->nodes; int size = tbl->size * 2; -- 2.34.1