Commit 42a72ee1 authored by Mark Dickinson's avatar Mark Dickinson

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.
........
parent 589b7959
......@@ -1041,7 +1041,6 @@ char_from_hex(int x)
static int
hex_from_char(char c) {
int x;
assert(isxdigit(c));
switch(c) {
case '0':
x = 0;
......@@ -1271,12 +1270,12 @@ float_fromhex(PyObject *cls, PyObject *arg)
/* coefficient: <integer> [. <fraction>] */
coeff_start = s;
while (isxdigit(*s))
while (hex_from_char(*s) >= 0)
s++;
s_store = s;
if (*s == '.') {
s++;
while (isxdigit(*s))
while (hex_from_char(*s) >= 0)
s++;
coeff_end = s-1;
}
......@@ -1298,10 +1297,10 @@ float_fromhex(PyObject *cls, PyObject *arg)
exp_start = s;
if (*s == '-' || *s == '+')
s++;
if (!isdigit(*s))
if (!('0' <= *s && *s <= '9'))
goto parse_error;
s++;
while (isdigit(*s))
while ('0' <= *s && *s <= '9')
s++;
exp = strtol(exp_start, NULL, 10);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment