egcs, warning patch for missing initializers in xsys-protos.h

Richard Henderson rth@cygnus.com
Sat Sep 19 11:38:00 GMT 1998


On Sat, Sep 19, 1998 at 09:01:55AM -0400, Kaveh R. Ghazi wrote:
> 	IMHO, you can't safely cast ctype function arguments in the
> ctype macros.  This was partially discussed last February starting with:
> http://www.cygnus.com/ml/egcs/1998-Feb/0643.html .  It became clear, in
> that discussion, that casting to int was bad.

What I see in that thread are a lot of what-ifs.  I ask those
involved the last time round: are there any actual systems that
display actual problems?

> The warning is pointing
> out something valid, the fact that char is often signed and when you
> evaluate character values > 127, you get negative results.  Ctype macros
> are often defined as lookups in an array, thus the negative index is
> bogus. 

Not necessarily.  For instance glibc defines things like this

	static unsigned short ctype_b[128+256] = {...}
	unsigned short *__ctype_b = &ctype_b[128];

which means that negative values do work.  Do actual implementations
really get this wrong?  Virtually all systems define EOF as -1 and
so must do something like this anyway.


r~



More information about the Gcc-patches mailing list