X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=src%2Fhash.c;h=f6a4558fb855a836763f741f218e5832d715344d;hp=64360477face3dfbdcbed69aaf89e432cabecfaa;hb=8365c3016d2564c0498d2dc21300b1bff57e929b;hpb=5a4b3d78dc422e2f388cbbd55007ea808c256d80 diff --git a/src/hash.c b/src/hash.c index 6436047..f6a4558 100644 --- a/src/hash.c +++ b/src/hash.c @@ -2,19 +2,21 @@ unsigned hash(int keyc, HKEY *keyv[], int tabsize) { - int i; - char *p; + int i, j; unsigned hashval = 0; + enum { + HASHNUM = 31 + }; for(i = 0; i < keyc; i++) { switch(keyv[i]->type) { case CHARS: - for(p = keyv[i]->val.s; *p != '\0'; p++) { - hashval = *p + 31 * hashval; + for(j = 0; keyv[i]->val.s[j]; j++) { + hashval = keyv[i]->val.s[j] + HASHNUM * hashval; } break; case INT: - hashval = keyv[i]->val.i + 31 * hashval; + hashval = keyv[i]->val.i + HASHNUM * hashval; break; default: break;