From: Stefan Krah Date: Mon, 19 Jul 2010 13:14:01 +0000 (+0000) Subject: Issue #9036: Throughout the code base, Py_CHARMASK is used on 8-bit wide X-Git-Tag: v2.7.1rc1~585 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a1775944ae4f9770aa5980a2c2a5454d3994db25;p=python 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. --- diff --git a/Include/Python.h b/Include/Python.h index 75d2b10d0b..775412b8c4 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -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"