mirror of
https://github.com/python/cpython.git
synced 2025-12-15 21:44:50 +00:00
Patch #1673759: add a missing overflow check when formatting floats
with %G.
This commit is contained in:
parent
bc5fbd9f8c
commit
7c3b50db66
4 changed files with 24 additions and 5 deletions
|
|
@ -9,6 +9,7 @@ maxsize = MAX_Py_ssize_t
|
|||
# test on unicode strings as well
|
||||
|
||||
overflowok = 1
|
||||
overflowrequired = 0
|
||||
|
||||
def testformat(formatstr, args, output=None):
|
||||
if verbose:
|
||||
|
|
@ -25,11 +26,16 @@ def testformat(formatstr, args, output=None):
|
|||
if verbose:
|
||||
print 'overflow (this is fine)'
|
||||
else:
|
||||
if output and result != output:
|
||||
if overflowrequired:
|
||||
if verbose:
|
||||
print 'no'
|
||||
print "%s %% %s == %s != %s" %\
|
||||
(repr(formatstr), repr(args), repr(result), repr(output))
|
||||
print "overflow expected on %s %% %s" % \
|
||||
(repr(formatstr), repr(args))
|
||||
elif output and result != output:
|
||||
if verbose:
|
||||
print 'no'
|
||||
print "%s %% %s == %s != %s" % \
|
||||
(repr(formatstr), repr(args), repr(result), repr(output))
|
||||
else:
|
||||
if verbose:
|
||||
print 'yes'
|
||||
|
|
@ -57,6 +63,14 @@ testboth("%#.*g", (110, -1.e+100/3.))
|
|||
# test some ridiculously large precision, expect overflow
|
||||
testboth('%12.*f', (123456, 1.0))
|
||||
|
||||
# check for internal overflow validation on length of precision
|
||||
overflowrequired = 1
|
||||
testboth("%#.*g", (110, -1.e+100/3.))
|
||||
testboth("%#.*G", (110, -1.e+100/3.))
|
||||
testboth("%#.*f", (110, -1.e+100/3.))
|
||||
testboth("%#.*F", (110, -1.e+100/3.))
|
||||
overflowrequired = 0
|
||||
|
||||
# Formatting of long integers. Overflow is not ok
|
||||
overflowok = 0
|
||||
testboth("%x", 10L, "a")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue