]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Remove an unnecessary extra copy of the bytes hash function.
authorGregory P. Smith <greg@krypto.org>
Sat, 14 Jan 2012 22:31:13 +0000 (14:31 -0800)
committerGregory P. Smith <greg@krypto.org>
Sat, 14 Jan 2012 22:31:13 +0000 (14:31 -0800)
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.

Modules/_datetimemodule.c

index b38423376a387b3717023b8512788dcedf66b4e4..3b0b36277c71fc8de2931081aec91ffc03030a7f 100644 (file)
@@ -2755,24 +2755,10 @@ date_replace(PyDateTime_Date *self, PyObject *args, PyObject *kw)
     return clone;
 }
 
-/*
-    Borrowed from stringobject.c, originally it was string_hash()
-*/
 static Py_hash_t
 generic_hash(unsigned char *data, int len)
 {
-    register unsigned char *p;
-    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;
+    return _Py_HashBytes(data, len);
 }