]> granicus.if.org Git - python/commitdiff
Issue #9036: Throughout the code base, Py_CHARMASK is used on 8-bit wide
authorStefan Krah <stefan@bytereef.org>
Mon, 19 Jul 2010 13:14:01 +0000 (13:14 +0000)
committerStefan Krah <stefan@bytereef.org>
Mon, 19 Jul 2010 13:14:01 +0000 (13:14 +0000)
signed/unsigned chars or on integers directly derived from those. In all
cases, it could be replaced by a simple cast to (unsigned char). Reasons
for the change:

  a) Make the comment more explicit.

  b) If char is unsigned, the cast is optimized away.

  c) If char is unsigned, gcc emits spurious "array subscript
     has type 'char'" warnings.

Include/Python.h

index 75d2b10d0b9503d6ce2d3558514845776692d32f..775412b8c4ef188aa1984752c80b58e4465ddd2b 100644 (file)
@@ -150,13 +150,8 @@ PyAPI_FUNC(PyObject*) _Py_Mangle(PyObject *p, PyObject *name);
    Set ml_flags in the PyMethodDef to METH_NOARGS. */
 #define PyArg_NoArgs(v)                PyArg_Parse(v, "")
 
-/* Convert a possibly signed character to a nonnegative int */
-/* XXX This assumes characters are 8 bits wide */
-#ifdef __CHAR_UNSIGNED__
-#define Py_CHARMASK(c)         (c)
-#else
+/* Argument must be a char or an int in [-128, 127] or [0, 255]. */
 #define Py_CHARMASK(c)         ((unsigned char)((c) & 0xff))
-#endif
 
 #include "pyfpe.h"