
Sept. 18, 2003
3:18 p.m.
[martin@v.loewis.de]
I think people have learned, over time, that negative characters are evil. So MS chose to make wchar_t unsigned, as, for 2-byte Unicode, you might otherwise run into negative characters. For gcc, people probably also agree that negative characters are evil, but using long int causes no harm here: All assigned characters are still positive, as Unicode goes only up to 2**21.
That's fine for gcc then, so long as we don't branch on the contents of uninitialized memory, and we just fixed a bug of that sort. If Py_UNICODE ever resolves to a signed 2-byte type, though, the sign bit is still in play for legit contents.