From 4ead7c7be8089de7cab5db7d2a75e6bec5b55f10 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 20 Nov 2011 19:48:36 +0100 Subject: 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. --- Objects/object.c | 5 +++++ 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(""); 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 -- cgit v0.12