From ecf9091f59c31ca868dbf2d9626a9a697c1a084b Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Fri, 16 May 2008 13:24:29 +0000 Subject: Don't allow keyword arguments to reversed(). --- Lib/test/test_enumerate.py | 2 ++ Objects/enumobject.c | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_enumerate.py b/Lib/test/test_enumerate.py index a27846f..074179c 100644 --- a/Lib/test/test_enumerate.py +++ b/Lib/test/test_enumerate.py @@ -138,6 +138,8 @@ class TestReversed(unittest.TestCase): for data in 'abc', range(5), tuple(enumerate('abc')), A(), xrange(1,17,5): self.assertEqual(list(data)[::-1], list(reversed(data))) self.assertRaises(TypeError, reversed, {}) + # don't allow keyword arguments + self.assertRaises(TypeError, reversed, [], a=1) def test_xrange_optimization(self): x = xrange(1) diff --git a/Objects/enumobject.c b/Objects/enumobject.c index 0bacc83..dfa738d 100644 --- a/Objects/enumobject.c +++ b/Objects/enumobject.c @@ -224,7 +224,10 @@ reversed_new(PyTypeObject *type, PyObject *args, PyObject *kwds) PyObject *seq; reversedobject *ro; - if (!PyArg_UnpackTuple(args, "reversed", 1, 1, &seq)) + if (type == &PyReversed_Type && !_PyArg_NoKeywords("reversed()", kwds)) + return NULL; + + if (!PyArg_UnpackTuple(args, "reversed", 1, 1, &seq) ) return NULL; if (PyObject_HasAttrString(seq, "__reversed__")) -- cgit v0.12