Date: Thu, 28 Jan 1999 15:24:35 +1100 From: Bruce Evans <bde@zeta.org.au> To: archie@whistle.com, dillon@apollo.backplane.com Cc: current@FreeBSD.ORG Subject: Re: kern/subr_scanf array index of signed char Message-ID: <199901280424.PAA01617@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>:Matthew Dillon writes: >:> goto match_failure; >:> } else { >:> p0 = p = va_arg(ap, char *); >:> - while (ccltab[*inp]) { >:> + while (ccltab[(int)(unsigned char)*inp]) { >:> inr--; >:> *p++ = *inp++; >:> if (--width == 0) >: >:Just curious.. why do you need the "(int)" cast? >: >:-Archie > > Actually, it could very well be that I don't. I didn't want to spend > the time to check to see if the compiler warned on unsigned-char array > indexes. You can change it back if unsigned char array indexes do not > produce a warning. Sloppy thinking. How would you know if you fixed the bug unless you checked that you fixed the bug instead of breaking the warning? The bug was that on systems with signed chars, *inp gave negative array indexes if the caller passes a format string with negative characters in certain positions. There are still lots of related isfoo(*inp) bugs. All these bugs are more serious in the userland. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901280424.PAA01617>