[Python-checkins] cpython: Issue #18408: Don't check unicode consistency in _PyUnicode_HAS_UTF8_MEMORY()
victor.stinner
python-checkins at python.org
Tue Jul 16 00:12:50 CEST 2013
http://hg.python.org/cpython/rev/ef0dbe00760e
changeset: 84642:ef0dbe00760e
user: Victor Stinner <victor.stinner at gmail.com>
date: Mon Jul 15 18:22:47 2013 +0200
summary:
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.
files:
Objects/unicodeobject.c | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -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))))
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list