summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-10-17 04:58:54 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-10-17 04:58:54 (GMT)
commit3453f862e1c74e400da67def9b810300ef90c3ac (patch)
treecccd112737f2cefd3841ea394c8c141913b3be7e
parentb32db4d0faec35ad8e6af35c54c37036b3d6c02f (diff)
parent9de0834663f28bee9e6b2c4647ed6128241ed26f (diff)
downloadgit-3453f862e1c74e400da67def9b810300ef90c3ac.zip
git-3453f862e1c74e400da67def9b810300ef90c3ac.tar.gz
git-3453f862e1c74e400da67def9b810300ef90c3ac.tar.bz2
Merge branch 'maint'
* maint: Fix hash function in xdiff library
-rw-r--r--xdiff/xmacros.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/xdiff/xmacros.h b/xdiff/xmacros.h
index 4c2fde8..e2cd202 100644
--- a/xdiff/xmacros.h
+++ b/xdiff/xmacros.h
@@ -24,14 +24,15 @@
#define XMACROS_H
-#define GR_PRIME 0x9e370001UL
#define XDL_MIN(a, b) ((a) < (b) ? (a): (b))
#define XDL_MAX(a, b) ((a) > (b) ? (a): (b))
#define XDL_ABS(v) ((v) >= 0 ? (v): -(v))
#define XDL_ISDIGIT(c) ((c) >= '0' && (c) <= '9')
-#define XDL_HASHLONG(v, b) (((unsigned long)(v) * GR_PRIME) >> ((CHAR_BIT * sizeof(unsigned long)) - (b)))
+#define XDL_ADDBITS(v,b) ((v) + ((v) >> (b)))
+#define XDL_MASKBITS(b) ((1UL << (b)) - 1)
+#define XDL_HASHLONG(v,b) (XDL_ADDBITS((unsigned long)(v), b) & XDL_MASKBITS(b))
#define XDL_PTRFREE(p) do { if (p) { xdl_free(p); (p) = NULL; } } while (0)
#define XDL_LE32_PUT(p, v) \
do { \