Kaydet (Commit) a0d10732 authored tarafından Eric V. Smith's avatar Eric V. Smith

Closed issue #8931: Make alternate formatting for 'c' raise an exception. Patch…

Closed issue #8931: Make alternate formatting for 'c' raise an exception. Patch by Torsten Landschoff.
üst 9417764e
...@@ -343,6 +343,8 @@ class TypesTests(unittest.TestCase): ...@@ -343,6 +343,8 @@ class TypesTests(unittest.TestCase):
self.assertRaises(ValueError, 3 .__format__, ",n") self.assertRaises(ValueError, 3 .__format__, ",n")
# can't have ',' with 'c' # can't have ',' with 'c'
self.assertRaises(ValueError, 3 .__format__, ",c") self.assertRaises(ValueError, 3 .__format__, ",c")
# can't have '#' with 'c'
self.assertRaises(ValueError, 3 .__format__, "#c")
# ensure that only int and float type specifiers work # ensure that only int and float type specifiers work
for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] + for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] +
......
...@@ -34,6 +34,10 @@ Core and Builtins ...@@ -34,6 +34,10 @@ Core and Builtins
replacement fields. It now matches the behavior of str.format() in replacement fields. It now matches the behavior of str.format() in
this regard. Patches by Phil Elson and Ramchandra Apte. this regard. Patches by Phil Elson and Ramchandra Apte.
- Issue #8931: Make alternate formatting ('#') for type 'c' raise an
exception. It had no effect, now trying to specify it is an error.
Patch by Torsten Landschoff.
Library Library
------- -------
......
...@@ -846,6 +846,13 @@ format_long_internal(PyObject *value, const InternalFormatSpec *format, ...@@ -846,6 +846,13 @@ format_long_internal(PyObject *value, const InternalFormatSpec *format,
" format specifier 'c'"); " format specifier 'c'");
goto done; goto done;
} }
/* error to request alternate format */
if (format->alternate) {
PyErr_SetString(PyExc_ValueError,
"Alternate form (#) not allowed with integer"
" format specifier 'c'");
goto done;
}
/* taken from unicodeobject.c formatchar() */ /* taken from unicodeobject.c formatchar() */
/* Integer input truncated to a character */ /* Integer input truncated to a character */
......
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