[issue9020] 2.7: eval hangs on AIX

Antoine Pitrou report at bugs.python.org
Sat Jun 19 14:16:53 CEST 2010

Antoine Pitrou <pitrou at free.fr> added the comment:

> Why do you say that? If c is -1, then Py_CHARMASK(c) is 255, which is a
> positive integer.

What srid seems to be saying is that chars are unsigned on AIX, and therefore Py_CHARMASK() returns -1. Hence his patch proposal.

Of course, it is dubious why EOF is not tested separately rather than passing it to Py_ISALNUM(). Micro-optimization? At least a comment should be added.

Also, really, the Py_CHARMASK() macro seems poorly specified. It claims to "convert a possibly signed character to a nonnegative int", but this is wrong: it doesn't convert to an int at all. Furthermore, it does a cast in one branch but not in the other, which can give bad surprises as here.

nosy: +pitrou

Python tracker <report at bugs.python.org>

More information about the Python-bugs-list mailing list