From: Serhiy Storchaka Date: Sat, 7 May 2016 12:41:09 +0000 (+0300) Subject: Issue #17765: weakref.ref() no longer silently ignores keyword arguments. X-Git-Tag: v2.7.12rc1~85 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=816a5ff3b218ac374f89bf3cda0d13f47b7bd92e;p=thirdparty%2FPython%2Fcpython.git Issue #17765: weakref.ref() no longer silently ignores keyword arguments. Patch by Georg Brandl. --- diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py index b7f985c939a7..4073d495fd16 100644 --- a/Lib/test/test_weakref.py +++ b/Lib/test/test_weakref.py @@ -116,6 +116,10 @@ class ReferencesTestCase(TestBase): ref1 = weakref.ref(c, callback) del c + def test_constructor_kwargs(self): + c = C() + self.assertRaises(TypeError, weakref.ref, c, callback=None) + def test_proxy_ref(self): o = C() o.bar = 1 diff --git a/Misc/NEWS b/Misc/NEWS index 0c2fb0b0bd2a..cca6266f6153 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -77,6 +77,9 @@ Core and Builtins Library ------- +- Issue #17765: weakref.ref() no longer silently ignores keyword arguments. + Patch by Georg Brandl. + - Issue #26873: xmlrpclib now raises ResponseError on unsupported type tags instead of silently return incorrect result. diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c index e1f4bc42c242..c8b982fcd59c 100644 --- a/Objects/weakrefobject.c +++ b/Objects/weakrefobject.c @@ -271,7 +271,6 @@ static int parse_weakref_init_args(char *funcname, PyObject *args, PyObject *kwargs, PyObject **obp, PyObject **callbackp) { - /* XXX Should check that kwargs == NULL or is empty. */ return PyArg_UnpackTuple(args, funcname, 1, 2, obp, callbackp); } @@ -334,6 +333,9 @@ weakref___init__(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject *tmp; + if (!_PyArg_NoKeywords("ref()", kwargs)) + return -1; + if (parse_weakref_init_args("__init__", args, kwargs, &tmp, &tmp)) return 0; else