Issue #13441: _PyUnicode_CheckConsistency() dumps the string if the maximum
character is bigger than U+10FFFF and locale.localeconv() dumps the string
before decoding it.
Temporary hack to debug the issue #13441.
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 6798ef8..6307a98 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -391,6 +391,19 @@
if (ch > maxchar)
maxchar = ch;
}
+ if (maxchar > 0x10FFFF) {
+ printf("Invalid Unicode string! {");
+ for (i=0; i < ascii->length; i++)
+ {
+ Py_UCS4 ch = PyUnicode_READ(kind, data, i);
+ if (i)
+ printf(", U+%04x", ch);
+ else
+ printf("U+%04x", ch);
+ }
+ printf("} (len=%u)\n", ascii->length);
+ abort();
+ }
if (kind == PyUnicode_1BYTE_KIND) {
if (ascii->state.ascii == 0) {
assert(maxchar >= 128);