diff options
Diffstat (limited to 'Objects/unicodeobject.c')
-rw-r--r-- | Objects/unicodeobject.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index e8b19cfbf5..6e4ef3d413 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -670,23 +670,24 @@ void _PyUnicode_Dump(PyObject *op) { PyASCIIObject *ascii = (PyASCIIObject *)op; - printf("%s: len=%zu, wstr=%p", - unicode_kind_name(op), - ascii->length, - ascii->wstr); + PyCompactUnicodeObject *compact = (PyCompactUnicodeObject *)op; + PyUnicodeObject *unicode = (PyUnicodeObject *)op; + void *data; + printf("%s: len=%zu, ",unicode_kind_name(op), ascii->length); + if (ascii->state.compact) + data = (compact + 1); + else + data = unicode->data.any; + if (ascii->wstr == data) + printf("shared "); + printf("wstr=%p", ascii->wstr); if (!ascii->state.ascii) { - PyCompactUnicodeObject *compact = (PyCompactUnicodeObject *)op; - printf(" (%zu), utf8=%p (%zu)", - compact->wstr_length, - compact->utf8, - compact->utf8_length); - } - if (!ascii->state.compact) { - PyUnicodeObject *unicode = (PyUnicodeObject *)op; - printf(", data=%p", - unicode->data.any); + printf(" (%zu), ", compact->wstr_length); + if (!ascii->state.compact && compact->utf8 == unicode->data.any) + printf("shared "); + printf("utf8=%p (%zu)", compact->utf8, compact->utf8_length); } - printf("\n"); + printf(", data=%p\n", data); } #endif |