summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2012-01-14 22:31:13 (GMT)
committerGregory P. Smith <greg@krypto.org>2012-01-14 22:31:13 (GMT)
commit5831bd2f3bdc9b07912fb939afc79d04910971e8 (patch)
tree601c711bd7caf575130f842ac86f3d7b26085f3a
parent0ea3ea5e6954635714d028cb174d911ba59b7862 (diff)
downloadcpython-5831bd2f3bdc9b07912fb939afc79d04910971e8.zip
cpython-5831bd2f3bdc9b07912fb939afc79d04910971e8.tar.gz
cpython-5831bd2f3bdc9b07912fb939afc79d04910971e8.tar.bz2
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.
-rw-r--r--Modules/_datetimemodule.c16
1 files changed, 1 insertions, 15 deletions
diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c
index b384233..3b0b362 100644
--- a/Modules/_datetimemodule.c
+++ b/Modules/_datetimemodule.c
@@ -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);
}