mirror of https://github.com/python/cpython
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:
parent
0ea3ea5e69
commit
5831bd2f3b
|
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue