Thomas Wouters added the comment:

Unfortunately there is no "release mode". There's Py_DEBUG mode, and the 
absence of Py_DEBUG. And there's NDEBUG, and the absence of NDEBUG, which 
controls the assert macro. Py_DEBUG unsets NDEBUG, but *not* setting Py_DEBUG 
doesn't *set* NDEBUG (nor should it.)

In the Google build environment, where we occasionally embed Python and also 
build extensions that use Python and Python itself in slightly different ways, 
we have build modes that don't set Py_DEBUG but don't set NDEBUG -- so we keep 
the asserts, but don't set Py_DEBUG (which would change the ABI.) I suggest 
that this is a valid expectation :) If something is used in assert statements 
(and _PyUnicode_CheckConsistency is, quite a lot) it needs to be defined 
whenever NDEBUG is not defined, not just when Py_DEBUG is defined. The patch 
makes it a macro that calls PyUnicode_Check() in that case, because that's what 
unicodeobject.c itself does.

In the case of obmalloc, the asserts are calling functions that are only 
defined when PYMALLOC_DEBUG is set, so it seems obvious that that's the guard 
that should surround their use.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue17411>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to