Skip to content

Commit 9e6c0ff

Browse files
committed
Merge pull request #96 from hintjens/master
Fixed zhash selftests
2 parents a3544bc + 49fab00 commit 9e6c0ff

File tree

1 file changed

+15
-18
lines changed

1 file changed

+15
-18
lines changed

src/zhash.c

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,9 @@ s_item_hash (const char *key, size_t limit)
8484
uint
8585
key_hash = 0;
8686

87-
// Torek hashing function
88-
while (*key) {
89-
key_hash *= 33;
90-
key_hash += *key;
91-
key++;
92-
}
87+
// Modified Bernstein hashing function
88+
while (*key)
89+
key_hash = 33 * key_hash ^ *key++;
9390
key_hash %= limit;
9491
return key_hash;
9592
}
@@ -467,36 +464,36 @@ zhash_test (int verbose)
467464

468465
// Insert some items
469466
int rc;
470-
rc = zhash_insert (hash, "DEADBEEF", (void *) 0xDEADBEEF);
467+
rc = zhash_insert (hash, "DEADBEEF", "dead beef");
471468
assert (rc == 0);
472-
rc = zhash_insert (hash, "ABADCAFE", (void *) 0xABADCAFE);
469+
rc = zhash_insert (hash, "ABADCAFE", "a bad cafe");
473470
assert (rc == 0);
474-
rc = zhash_insert (hash, "C0DEDBAD", (void *) 0xC0DEDBAD);
471+
rc = zhash_insert (hash, "C0DEDBAD", "coded bad");
475472
assert (rc == 0);
476-
rc = zhash_insert (hash, "DEADF00D", (void *) 0xDEADF00D);
473+
rc = zhash_insert (hash, "DEADF00D", "dead food");
477474
assert (rc == 0);
478475
assert (zhash_size (hash) == 4);
479476

480477
// Look for existing items
481-
void *item;
478+
char *item;
482479
item = zhash_lookup (hash, "DEADBEEF");
483-
assert (item == (void *) 0xDEADBEEF);
480+
assert (streq (item, "dead beef"));
484481
item = zhash_lookup (hash, "ABADCAFE");
485-
assert (item == (void *) 0xABADCAFE);
482+
assert (streq (item, "a bad cafe"));
486483
item = zhash_lookup (hash, "C0DEDBAD");
487-
assert (item == (void *) 0xC0DEDBAD);
484+
assert (streq (item, "coded bad"));
488485
item = zhash_lookup (hash, "DEADF00D");
489-
assert (item == (void *) 0xDEADF00D);
486+
assert (streq (item, "dead food"));
490487

491488
// Look for non-existent items
492-
item = zhash_lookup (hash, "0xF0000000");
489+
item = zhash_lookup (hash, "foo");
493490
assert (item == NULL);
494491

495492
// Try to insert duplicate items
496-
rc = zhash_insert (hash, "DEADBEEF", (void *) 0xF0000000);
493+
rc = zhash_insert (hash, "DEADBEEF", "foo");
497494
assert (rc == -1);
498495
item = zhash_lookup (hash, "DEADBEEF");
499-
assert (item == (void *) 0xDEADBEEF);
496+
assert (streq (item, "dead beef"));
500497

501498
// Rename an item
502499
rc = zhash_rename (hash, "DEADBEEF", "LIVEBEEF");

0 commit comments

Comments
 (0)