Kaydet (Commit) 077f2714 authored tarafından Tim Peters's avatar Tim Peters

SF bug 543840: complex(string) accepts strings with \0

complex_subtype_from_string():  this stopped parsing at the first 0
byte, as if that were the end of the input string.

Bugfix candidate.
üst 518d261f
......@@ -124,16 +124,29 @@ if complex(0j, 3.14) != 3.14j: raise TestFailed, 'complex(0j, 3.14)'
if complex(0.0, 3.14) != 3.14j: raise TestFailed, 'complex(0.0, 3.14)'
if complex("1") != 1+0j: raise TestFailed, 'complex("1")'
if complex("1j") != 1j: raise TestFailed, 'complex("1j")'
try: complex("1", "1")
except TypeError: pass
else: raise TestFailed, 'complex("1", "1")'
try: complex(1, "1")
except TypeError: pass
else: raise TestFailed, 'complex(1, "1")'
if complex(" 3.14+J ") != 3.14+1j: raise TestFailed, 'complex(" 3.14+J )"'
if have_unicode:
if complex(unicode(" 3.14+J ")) != 3.14+1j:
raise TestFailed, 'complex(u" 3.14+J )"'
# SF bug 543840: complex(string) accepts strings with \0
# Fixed in 2.3.
try:
complex('1+1j\0j')
except ValueError:
pass
else:
raise TestFailed("complex('1+1j\0j') should have raised ValueError")
class Z:
def __complex__(self): return 3.14j
z = Z()
......
......@@ -787,7 +787,7 @@ complex_subtype_from_string(PyTypeObject *type, PyObject *v)
} /* end of switch */
} while (*s!='\0' && !sw_error);
} while (s - start < len && !sw_error);
if (sw_error) {
PyErr_SetString(PyExc_ValueError,
......
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