>: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 majord...@freebsd.org with "unsubscribe freebsd-current" in the body of the message