diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2011-11-20 18:48:36 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2011-11-20 18:48:36 (GMT) |
commit | 4ead7c7be8089de7cab5db7d2a75e6bec5b55f10 (patch) | |
tree | 7917a647fd0e2bf4e29c6ce5f0624de1f52b0c55 | |
parent | 2b979bfa3c27636fe298b7c5d8f17354bd2b566c (diff) | |
download | cpython-4ead7c7be8089de7cab5db7d2a75e6bec5b55f10.zip cpython-4ead7c7be8089de7cab5db7d2a75e6bec5b55f10.tar.gz cpython-4ead7c7be8089de7cab5db7d2a75e6bec5b55f10.tar.bz2 |
PyObject_Str() ensures that the result string is ready
and check the string consistency.
_PyUnicode_CheckConsistency() doesn't check the hash anymore. It should be
possible to call this function even if hash(str) was already called.
-rw-r--r-- | Objects/object.c | 5 | ||||
-rw-r--r-- | Objects/unicodeobject.c | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/Objects/object.c b/Objects/object.c index 51188b7..25e64e1 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -403,6 +403,8 @@ PyObject_Str(PyObject *v) if (v == NULL) return PyUnicode_FromString("<NULL>"); if (PyUnicode_CheckExact(v)) { + if (PyUnicode_READY(v) < 0) + return NULL; Py_INCREF(v); return v; } @@ -424,6 +426,9 @@ PyObject_Str(PyObject *v) Py_DECREF(res); return NULL; } + if (PyUnicode_READY(res) < 0) + return NULL; + assert(_PyUnicode_CheckConsistency(res, 1)); return res; } diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 7aa5ff0..1e44357 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -408,8 +408,6 @@ _PyUnicode_CheckConsistency(PyObject *op, int check_content) assert(maxchar <= 0x10FFFF); } } - if (check_content && !unicode_is_singleton(op)) - assert(ascii->hash == -1); return 1; } #endif |