Remove an unnecessary extra copy of the bytes hash function.

This copy also had a bug in it, it fails to incorporate the length
into the hash by using it as the loop variable so it'll always be -1
by the time it is XORed in.

As such: I'm doing this only in Python 3.3 and not backporting as it
would change the existing hash behavior of datetime objects.
This commit is contained in:
Gregory P. Smith 2012-01-14 14:31:13 -08:00
parent 0ea3ea5e69
commit 5831bd2f3b
1 changed files with 1 additions and 15 deletions

View File

@ -2755,24 +2755,10 @@ date_replace(PyDateTime_Date *self, PyObject *args, PyObject *kw)
return clone; return clone;
} }
/*
Borrowed from stringobject.c, originally it was string_hash()
*/
static Py_hash_t static Py_hash_t
generic_hash(unsigned char *data, int len) generic_hash(unsigned char *data, int len)
{ {
register unsigned char *p; return _Py_HashBytes(data, len);
register Py_uhash_t x;
p = (unsigned char *) data;
x = (Py_uhash_t)*p << 7;
while (--len >= 0)
x = (1000003U*x) ^ (Py_uhash_t)*p++;
x ^= (Py_uhash_t)len;
if (x == -1)
x = -2;
return x;
} }