|
| >
| > | In lk 2.5.46-bk3 the expression in the subject line
| > | fails to write into "i" and returns 0. Drop the minus
| > | sign and it works.
| >
| > Here's an unobstrusive patch to correct that.
| > Please apply.
| >
| > --
| > ~Randy
| > -
|
| I was thinking that if anybody ever had to change any of this
| stuff, it might be a good idea to do the indirection only once?
| All those "splats" over and over again are costly.
Sure, it looks cleaner that way, although gcc has already put <*dig>
in a local register; i.e., it's not pulled from memory for each test.
Here's a (tested) version that does that.
--
~Randy
--- ./lib/vsprintf.c%signed Mon Nov 4 14:30:49 2002
{
const char *str = buf;
char *next;
+ char *dig, onedig;
int num = 0;
int qualifier;
while (isspace(*str))
str++;
- if (!*str
- || (base == 16 && !isxdigit(*str))
- || (base == 10 && !isdigit(*str))
- || (base == 8 && (!isdigit(*str) || *str > '7'))
- || (base == 0 && !isdigit(*str)))
- break;
+ dig = (*str == '-') ? (str + 1) : str;
+ onedig = *dig;
+ if (!onedig
+ || (base == 16 && !isxdigit(onedig))
+ || (base == 10 && !isdigit(onedig))
+ || (base == 8 && (!isdigit(onedig) || onedig > '7'))
+ || (base == 0 && !isdigit(onedig)))
+ break;
switch(qualifier) {
case 'h':
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/