Restore caching of unicode hash value. This apparently was broken

during some refactoring.
This commit is contained in:
Neil Schemenauer 2007-09-07 20:49:04 +00:00
parent 02c305614d
commit f8c37d16f3
1 changed files with 12 additions and 5 deletions

View File

@ -6588,12 +6588,19 @@ unicode_getitem(PyUnicodeObject *self, Py_ssize_t index)
}
static long
unicode_hash(PyObject *self)
unicode_hash(PyUnicodeObject *self)
{
/* Since Unicode objects compare equal to their UTF-8 string
counterparts, we hash the UTF-8 string. */
PyObject *v = _PyUnicode_AsDefaultEncodedString(self, NULL);
return PyObject_Hash(v);
if (self->hash != -1) {
return self->hash;
}
else {
/* Since Unicode objects compare equal to their UTF-8 string
counterparts, we hash the UTF-8 string. */
PyObject *v = _PyUnicode_AsDefaultEncodedString((PyObject*)self, NULL);
long x = PyObject_Hash(v);
self->hash = x;
return x;
}
}
PyDoc_STRVAR(index__doc__,