From a849a4b6b4c29f4cad0ee71a9fc5ebc16f6bb504 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 3 Oct 2011 12:12:11 +0200 Subject: [PATCH] _PyUnicode_Dump() indicates if wstr and/or utf8 are shared --- Objects/unicodeobject.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index e8b19cfbf56..6e4ef3d413b 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); + 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); } - if (!ascii->state.compact) { - PyUnicodeObject *unicode = (PyUnicodeObject *)op; - printf(", data=%p", - unicode->data.any); - } - printf("\n"); + printf(", data=%p\n", data); } #endif