forgot to check in the new makeunicodedata.py script
diff --git a/Modules/ucnhash.c b/Modules/ucnhash.c
index d7b3f2c..248300e 100644
--- a/Modules/ucnhash.c
+++ b/Modules/ucnhash.c
@@ -11,16 +11,13 @@
/* database code (cut and pasted from the unidb package) */
static unsigned long
-gethash(const char *s, int len)
+gethash(const char *s, int len, int scale)
{
int i;
unsigned long h = 0;
unsigned long ix;
for (i = 0; i < len; i++) {
- /* magic value 47 was chosen to minimize the number
- of collisions for the uninames dataset. see the
- makeunicodedata script for more background */
- h = (h * 47) + (unsigned char) toupper(s[i]);
+ h = (h * scale) + (unsigned char) toupper(s[i]);
ix = h & 0xff000000;
if (ix)
h = (h ^ ((ix>>24) & 0xff)) & 0x00ffffff;
@@ -40,8 +37,9 @@
return 0;
/* get offset into phrasebook */
- offset = phrasebook_offset1[(code>>SHIFT)];
- offset = phrasebook_offset2[(offset<<SHIFT)+(code&((1<<SHIFT)-1))];
+ offset = phrasebook_offset1[(code>>phrasebook_shift)];
+ offset = phrasebook_offset2[(offset<<phrasebook_shift)+
+ (code&((1<<phrasebook_shift)-1))];
if (!offset)
return 0;
@@ -99,14 +97,14 @@
getcode(const char* name, int namelen, Py_UCS4* code)
{
unsigned int h, v;
- unsigned int mask = CODE_SIZE-1;
+ unsigned int mask = code_size-1;
unsigned int i, incr;
/* the following is the same as python's dictionary lookup, with
only minor changes. see the makeunicodedata script for more
details */
- h = (unsigned int) gethash(name, namelen);
+ h = (unsigned int) gethash(name, namelen, code_magic);
i = (~h) & mask;
v = code_hash[i];
if (!v)
@@ -129,7 +127,7 @@
}
incr = incr << 1;
if (incr > mask)
- incr = incr ^ CODE_POLY;
+ incr = incr ^ code_poly;
}
}