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.
This commit is contained in:
Victor Stinner 2011-11-20 19:48:36 +01:00
parent 2b979bfa3c
commit 4ead7c7be8
2 changed files with 5 additions and 2 deletions

View File

@ -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;
}

View File

@ -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