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