mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
bytes should be verboten in sum() (fixes #12654)
This commit is contained in:
parent
e12c0b1767
commit
ce071ca4e7
3 changed files with 10 additions and 0 deletions
|
@ -1128,6 +1128,9 @@ class BuiltinTest(unittest.TestCase):
|
|||
self.assertRaises(TypeError, sum, 42)
|
||||
self.assertRaises(TypeError, sum, ['a', 'b', 'c'])
|
||||
self.assertRaises(TypeError, sum, ['a', 'b', 'c'], '')
|
||||
self.assertRaises(TypeError, sum, [b'a', b'c'], b'')
|
||||
values = [bytearray(b'a'), bytearray(b'b')]
|
||||
self.assertRaises(TypeError, sum, values, bytearray(b''))
|
||||
self.assertRaises(TypeError, sum, [[1], [2], [3]])
|
||||
self.assertRaises(TypeError, sum, [{2:3}])
|
||||
self.assertRaises(TypeError, sum, [{2:3}]*2, {2:3})
|
||||
|
|
|
@ -10,6 +10,8 @@ What's New in Python 3.3 Alpha 1?
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Forbid summing bytes in sum().
|
||||
|
||||
- Verify the types of AST strings and identifiers provided by the user before
|
||||
compiling them.
|
||||
|
||||
|
|
|
@ -1888,6 +1888,11 @@ builtin_sum(PyObject *self, PyObject *args)
|
|||
Py_DECREF(iter);
|
||||
return NULL;
|
||||
}
|
||||
if (PyBytes_Check(result)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"sum() can't sum bytes [use b''.join(seq) instead]");
|
||||
return NULL;
|
||||
}
|
||||
if (PyByteArray_Check(result)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"sum() can't sum bytes [use b''.join(seq) instead]");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue