mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
Merged revisions 65964 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r65964 | mark.dickinson | 2008-08-21 22:38:38 +0100 (Thu, 21 Aug 2008) | 7 lines issue 3633: Solaris allows fullwidth Unicode digits in isxdigit, so rewrite float.fromhex to only allow ASCII hex digits on all platforms. (Tests for this are already present, but the test_float failures on Solaris hadn't been noticed before.) Reviewed by Antoine Pitrou. ........
This commit is contained in:
parent
589b795986
commit
42a72ee181
1 changed files with 4 additions and 5 deletions
|
@ -1041,7 +1041,6 @@ char_from_hex(int x)
|
||||||
static int
|
static int
|
||||||
hex_from_char(char c) {
|
hex_from_char(char c) {
|
||||||
int x;
|
int x;
|
||||||
assert(isxdigit(c));
|
|
||||||
switch(c) {
|
switch(c) {
|
||||||
case '0':
|
case '0':
|
||||||
x = 0;
|
x = 0;
|
||||||
|
@ -1271,12 +1270,12 @@ float_fromhex(PyObject *cls, PyObject *arg)
|
||||||
|
|
||||||
/* coefficient: <integer> [. <fraction>] */
|
/* coefficient: <integer> [. <fraction>] */
|
||||||
coeff_start = s;
|
coeff_start = s;
|
||||||
while (isxdigit(*s))
|
while (hex_from_char(*s) >= 0)
|
||||||
s++;
|
s++;
|
||||||
s_store = s;
|
s_store = s;
|
||||||
if (*s == '.') {
|
if (*s == '.') {
|
||||||
s++;
|
s++;
|
||||||
while (isxdigit(*s))
|
while (hex_from_char(*s) >= 0)
|
||||||
s++;
|
s++;
|
||||||
coeff_end = s-1;
|
coeff_end = s-1;
|
||||||
}
|
}
|
||||||
|
@ -1298,10 +1297,10 @@ float_fromhex(PyObject *cls, PyObject *arg)
|
||||||
exp_start = s;
|
exp_start = s;
|
||||||
if (*s == '-' || *s == '+')
|
if (*s == '-' || *s == '+')
|
||||||
s++;
|
s++;
|
||||||
if (!isdigit(*s))
|
if (!('0' <= *s && *s <= '9'))
|
||||||
goto parse_error;
|
goto parse_error;
|
||||||
s++;
|
s++;
|
||||||
while (isdigit(*s))
|
while ('0' <= *s && *s <= '9')
|
||||||
s++;
|
s++;
|
||||||
exp = strtol(exp_start, NULL, 10);
|
exp = strtol(exp_start, NULL, 10);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue