lib: strto: fix metric suffix parsing in strtoul[l]

While 1kB or 1kiB will be parsed correctly, 1k will return the right
amount, but the metric suffix will not be escaped once the char
pointer updated. Fix this situation by simplifying the move of the
endp pointer.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
Miquel Raynal 2018-09-06 09:08:44 +02:00 committed by Jagan Teki
parent a353e6aa8e
commit b87b0d8d79
1 changed files with 10 additions and 12 deletions

View File

@ -94,12 +94,11 @@ unsigned long ustrtoul(const char *cp, char **endp, unsigned int base)
/* fall through */
case 'k':
result *= 1024;
if ((*endp)[1] == 'i') {
if ((*endp)[2] == 'B')
(*endp) += 3;
else
(*endp) += 2;
}
(*endp)++;
if (**endp == 'i')
(*endp)++;
if (**endp == 'B')
(*endp)++;
}
return result;
}
@ -116,12 +115,11 @@ unsigned long long ustrtoull(const char *cp, char **endp, unsigned int base)
/* fall through */
case 'k':
result *= 1024;
if ((*endp)[1] == 'i') {
if ((*endp)[2] == 'B')
(*endp) += 3;
else
(*endp) += 2;
}
(*endp)++;
if (**endp == 'i')
(*endp)++;
if (**endp == 'B')
(*endp)++;
}
return result;
}