Kaydet (Commit) 3f7983a2 authored tarafından Xtreak's avatar Xtreak Kaydeden (comit) Victor Stinner

bpo-35560: Remove assertion from format(float, "n") (GH-11288)

Fix an assertion error in format() in debug build for floating point
formatting with "n" format, zero padding and small width. Release build is
not impacted. Patch by Karthikeyan Singaravelan.
üst a0bb51e4
......@@ -701,6 +701,25 @@ class FormatTestCase(unittest.TestCase):
self.assertEqual(format(1234.56, '.4'), '1.235e+03')
self.assertEqual(format(12345.6, '.4'), '1.235e+04')
def test_issue35560(self):
self.assertEqual(format(123.0, '00'), '123.0')
self.assertEqual(format(123.34, '00f'), '123.340000')
self.assertEqual(format(123.34, '00e'), '1.233400e+02')
self.assertEqual(format(123.34, '00g'), '123.34')
self.assertEqual(format(123.34, '00.10f'), '123.3400000000')
self.assertEqual(format(123.34, '00.10e'), '1.2334000000e+02')
self.assertEqual(format(123.34, '00.10g'), '123.34')
self.assertEqual(format(123.34, '01f'), '123.340000')
self.assertEqual(format(-123.0, '00'), '-123.0')
self.assertEqual(format(-123.34, '00f'), '-123.340000')
self.assertEqual(format(-123.34, '00e'), '-1.233400e+02')
self.assertEqual(format(-123.34, '00g'), '-123.34')
self.assertEqual(format(-123.34, '00.10f'), '-123.3400000000')
self.assertEqual(format(-123.34, '00.10f'), '-123.3400000000')
self.assertEqual(format(-123.34, '00.10e'), '-1.2334000000e+02')
self.assertEqual(format(-123.34, '00.10g'), '-123.34')
class ReprTestCase(unittest.TestCase):
def test_repr(self):
floats_file = open(os.path.join(os.path.split(__file__)[0],
......
Fix an assertion error in :func:`format` in debug build for floating point
formatting with "n" format, zero padding and small width. Release build is
not impacted. Patch by Karthikeyan Singaravelan.
......@@ -9381,6 +9381,7 @@ _PyUnicode_InsertThousandsGrouping(
PyObject *thousands_sep,
Py_UCS4 *maxchar)
{
min_width = Py_MAX(0, min_width);
if (writer) {
assert(digits != NULL);
assert(maxchar == NULL);
......@@ -9391,7 +9392,6 @@ _PyUnicode_InsertThousandsGrouping(
}
assert(0 <= d_pos);
assert(0 <= n_digits);
assert(0 <= min_width);
assert(grouping != NULL);
if (digits != NULL) {
......
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