X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fhashmap.c;h=95ea45da4893662d42b569f16914acf6ec4101e9;hb=64685e0cea62b4937f0804e47ce2cb7929f58223;hp=0d89da461406b30b022b0760289acd20e457b217;hpb=39c2a6f19301c0042142149fdaa34a5f8cf71c0e;p=elogind.git diff --git a/src/hashmap.c b/src/hashmap.c index 0d89da461..95ea45da4 100644 --- a/src/hashmap.c +++ b/src/hashmap.c @@ -124,11 +124,13 @@ __attribute__((destructor)) static void cleanup_pool(void) { #endif unsigned string_hash_func(const void *p) { - unsigned hash = 0; - const char *c; + unsigned hash = 5381; + const signed char *c; + + /* DJB's hash function */ for (c = p; *c; c++) - hash = 31 * hash + (unsigned) *c; + hash = (hash << 5) + hash + (unsigned) *c; return hash; }