_PyUnicode_CheckConsistency() checks utf8 field consistency

This commit is contained in:
Victor Stinner 2011-10-03 14:42:39 +02:00
parent 3cf4637e4e
commit 85041a54bd
2 changed files with 8 additions and 0 deletions

View file

@ -293,11 +293,13 @@ _PyUnicode_CheckConsistency(void *op)
assert(ascii->state.ready == 1);
}
else if (ascii->state.compact == 1) {
PyCompactUnicodeObject *compact = (PyCompactUnicodeObject *)op;
assert(kind == PyUnicode_1BYTE_KIND
|| kind == PyUnicode_2BYTE_KIND
|| kind == PyUnicode_4BYTE_KIND);
assert(ascii->state.ascii == 0);
assert(ascii->state.ready == 1);
assert (compact->utf8 != (void*)(compact + 1));
} else {
PyCompactUnicodeObject *compact = (PyCompactUnicodeObject *)op;
PyUnicodeObject *unicode = (PyUnicodeObject *)op;
@ -318,6 +320,10 @@ _PyUnicode_CheckConsistency(void *op)
assert(ascii->state.compact == 0);
assert(ascii->state.ready == 1);
assert(unicode->data.any != NULL);
if (ascii->state.ascii)
assert (compact->utf8 == unicode->data.any);
else
assert (compact->utf8 != unicode->data.any);
}
}
return 1;