]> granicus.if.org Git - python/commitdiff
Merged revisions 82969 via svnmerge from
authorStefan Krah <stefan@bytereef.org>
Mon, 19 Jul 2010 13:36:13 +0000 (13:36 +0000)
committerStefan Krah <stefan@bytereef.org>
Mon, 19 Jul 2010 13:36:13 +0000 (13:36 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/release27-maint

........
  r82969 | stefan.krah | 2010-07-19 15:14:01 +0200 (Mon, 19 Jul 2010) | 14 lines

  Issue #9036: Throughout the code base, Py_CHARMASK is used on 8-bit wide
  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 1a05116235fa6f8dab9767e59d549fca56cd25af..b09b4bbb70fac94323584ef51c739c94ea78b358 100644 (file)
@@ -147,13 +147,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"