[Python-Dev] Re: [Python-checkins] python/dist/src/Objects
unicodeobject.c, 2.197, 2.198
Tim Peters
tim.one at comcast.net
Tue Sep 16 17:39:58 EDT 2003
[M.-A. Lemburg]
> Note that the implementation will bomb in several places if
> Py_UNICODE is a signed type.
>
> Py_UNICODE was never intended to be a signed type, so the proper
> fix would be to add logic so that Py_UNICODE gets forced to be an
> unsigned type.
Jeremy believed Py_UNICODE was already an unsigned type on his box, and that
was the box with the segfaults. I don't know. Comparison with a signed int
confused the issues to the point where we gave up and just fixed it <wink>.
> The only case where Py_UNICODE could become signed is via
> a compiler that defines wchar_t to be signed -- rather unlikely.
The C standard requires wchar_t to be an integer type, but doesn't constrain
it further to an unsigned integer type. I don't like relying on
non-standard assumptions in cases where there's little-to-no cost in not
relying on them. For example, the cast I put in with this patch is probably
a nop on most boxes, just forcing an unsigned comparison (which must have
been the original intent, if Py_UNICODE was assumed to be an unsigned type).
More information about the Python-Dev
mailing list