ctype bug

Simon 'corecode' Schubert corecode at fs.ei.tum.de
Wed Jul 6 17:08:04 PDT 2005


Lately Matthew Dillon <dillon at xxxxxxxxxxxxxxxxxxxx> said:
>     We can't use assert without including assert.h, but it does bring up
>     the point as to whether we should fault out the program or whether
>     we should silently return 0.

i'd say, make it a compile time flag. we can't assert, that's true, but
we could *(int*)0 = 1 or something like this.

>     Here's what I'm thinking of.  The only thing I don't like about it is
>     the way _CTYPE_NUM_CHARS is defined, but on the other hand I'm not
>     particularly expecting that we will ever port to an architecture where
>     a character is more then 8 bits.

seconded. if so, we can still change it :)

> +static __inline int
> +__libc_ctype_index(__uint16_t mask, int c)
> +{
> +	if (c < -1 || c >= _CTYPE_NUM_CHARS)
> +		return(0);

how about folding the argument? this way passing an signed char
actually works like "expected":

int i = 0xad;	/* euro sign (?) */
char c = i;
printf("%c %c %d %d\n", i, c, isprint(i), isprint(c));

should print "? ? 1 1", and not "? ? 1 0". or maybe it's too late
and i'm missing something.

cheers
  simon

-- 
Serve - BSD     +++  RENT this banner advert  +++    ASCII Ribbon   /"\
Work - Mac      +++  space for low $$$ NOW!1  +++      Campaign     \ /
Party Enjoy Relax   |   http://dragonflybsd.org      Against  HTML   \
Dude 2c 2 the max   !   http://golden-apple.biz       Mail + News   / \
Attachment:
pgp00011.pgp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pgp00011.pgp
Type: application/octet-stream
Size: 189 bytes
Desc: "Description: PGP signature"
URL: <http://lists.dragonflybsd.org/pipermail/commits/attachments/20050706/c702129b/attachment-0022.obj>


More information about the Commits mailing list