Mercurial > cpython-lru_cache-weakref
diff Objects/unicodeobject.c @ 84642:ef0dbe00760e
Issue #18408: Don't check unicode consistency in _PyUnicode_HAS_UTF8_MEMORY()
and _PyUnicode_HAS_WSTR_MEMORY() macros
These macros are called in unicode_dealloc(), whereas the unicode object can be
"inconsistent" if the creation of the object failed.
For example, when unicode_subtype_new() fails on a memory allocation,
_PyUnicode_CheckConsistency() fails with an assertion error because data is
NULL.
| author | Victor Stinner <victor.stinner@gmail.com> |
|---|---|
| date | Mon, 15 Jul 2013 18:22:47 +0200 |
| parents | d605c6b8095c |
| children | a6891949b54a |
line wrap: on
line diff
--- a/Objects/unicodeobject.c Mon Jul 15 17:50:07 2013 +0200 +++ b/Objects/unicodeobject.c Mon Jul 15 18:22:47 2013 +0200 @@ -122,16 +122,14 @@ /* true if the Unicode object has an allocated UTF-8 memory block (not shared with other data) */ #define _PyUnicode_HAS_UTF8_MEMORY(op) \ - (assert(_PyUnicode_CHECK(op)), \ - (!PyUnicode_IS_COMPACT_ASCII(op) \ + ((!PyUnicode_IS_COMPACT_ASCII(op) \ && _PyUnicode_UTF8(op) \ && _PyUnicode_UTF8(op) != PyUnicode_DATA(op))) /* true if the Unicode object has an allocated wstr memory block (not shared with other data) */ #define _PyUnicode_HAS_WSTR_MEMORY(op) \ - (assert(_PyUnicode_CHECK(op)), \ - (_PyUnicode_WSTR(op) && \ + ((_PyUnicode_WSTR(op) && \ (!PyUnicode_IS_READY(op) || \ _PyUnicode_WSTR(op) != PyUnicode_DATA(op))))
