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.
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 @@
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 @@
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 @@
assert(maxchar <= 0x10FFFF);
}
}
- if (check_content && !unicode_is_singleton(op))
- assert(ascii->hash == -1);
return 1;
}
#endif