]> granicus.if.org Git - python/commitdiff
Issue #29460: _PyArg_NoKeywords(), _PyArg_NoStackKeywords() and
authorSerhiy Storchaka <storchaka@gmail.com>
Mon, 6 Feb 2017 08:41:46 +0000 (10:41 +0200)
committerSerhiy Storchaka <storchaka@gmail.com>
Mon, 6 Feb 2017 08:41:46 +0000 (10:41 +0200)
_PyArg_NoPositional() now are macros.

Include/modsupport.h
Modules/_operator.c
Objects/setobject.c
Python/getargs.c

index 7f4160e5bac63ca4b047c1884b7a9657f20ea4a4..853860f4d27e8d7cdd771dbc7b7df57efb8d2d62 100644 (file)
@@ -62,6 +62,13 @@ PyAPI_FUNC(int) _PyArg_UnpackStack(
 PyAPI_FUNC(int) _PyArg_NoKeywords(const char *funcname, PyObject *kwargs);
 PyAPI_FUNC(int) _PyArg_NoStackKeywords(const char *funcname, PyObject *kwnames);
 PyAPI_FUNC(int) _PyArg_NoPositional(const char *funcname, PyObject *args);
+#define _PyArg_NoKeywords(funcname, kwargs) \
+    ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs)))
+#define _PyArg_NoStackKeywords(funcname, kwnames) \
+    ((kwnames) == NULL || _PyArg_NoStackKeywords((funcname), (kwnames)))
+#define _PyArg_NoPositional(funcname, args) \
+    ((args) == NULL || _PyArg_NoPositional((funcname), (args)))
+
 #endif
 
 PyAPI_FUNC(PyObject *) Py_VaBuildValue(const char *, va_list);
index 9374b8e8a598b3ce15f28dff7930d0acbeb4d458..10d787457998d260b308bca565a88746f1caabd5 100644 (file)
@@ -993,7 +993,7 @@ itemgetter_call(itemgetterobject *ig, PyObject *args, PyObject *kw)
     PyObject *obj, *result;
     Py_ssize_t i, nitems=ig->nitems;
 
-    if (kw != NULL && !_PyArg_NoKeywords("itemgetter", kw))
+    if (!_PyArg_NoKeywords("itemgetter", kw))
         return NULL;
     if (!PyArg_UnpackTuple(args, "itemgetter", 1, 1, &obj))
         return NULL;
@@ -1283,7 +1283,7 @@ attrgetter_call(attrgetterobject *ag, PyObject *args, PyObject *kw)
     PyObject *obj, *result;
     Py_ssize_t i, nattrs=ag->nattrs;
 
-    if (kw != NULL && !_PyArg_NoKeywords("attrgetter", kw))
+    if (!_PyArg_NoKeywords("attrgetter", kw))
         return NULL;
     if (!PyArg_UnpackTuple(args, "attrgetter", 1, 1, &obj))
         return NULL;
@@ -1527,7 +1527,7 @@ methodcaller_call(methodcallerobject *mc, PyObject *args, PyObject *kw)
 {
     PyObject *method, *obj, *result;
 
-    if (kw != NULL && !_PyArg_NoKeywords("methodcaller", kw))
+    if (!_PyArg_NoKeywords("methodcaller", kw))
         return NULL;
     if (!PyArg_UnpackTuple(args, "methodcaller", 1, 1, &obj))
         return NULL;
index 4f04f49efaa34739dec6b5b882d0e1c960ab9d1e..2ccf183e3c79117c8c25bc5bc1265c5cb4eb675b 100644 (file)
@@ -1084,8 +1084,7 @@ frozenset_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
 {
     PyObject *iterable = NULL, *result;
 
-    if (kwds != NULL && type == &PyFrozenSet_Type
-        && !_PyArg_NoKeywords("frozenset()", kwds))
+    if (type == &PyFrozenSet_Type && !_PyArg_NoKeywords("frozenset()", kwds))
         return NULL;
 
     if (!PyArg_UnpackTuple(args, type->tp_name, 0, 1, &iterable))
@@ -2002,7 +2001,7 @@ set_init(PySetObject *self, PyObject *args, PyObject *kwds)
 {
     PyObject *iterable = NULL;
 
-    if (kwds != NULL && !_PyArg_NoKeywords("set()", kwds))
+    if (!_PyArg_NoKeywords("set()", kwds))
         return -1;
     if (!PyArg_UnpackTuple(args, Py_TYPE(self)->tp_name, 0, 1, &iterable))
         return -1;
index 952a662ecf5c717e6f9f2ef175cc7a8d207fad5d..8cb672d6abc38af7af0950a12e7ee26e2ae4bd09 100644 (file)
@@ -2446,6 +2446,10 @@ _PyArg_UnpackStack(PyObject **args, Py_ssize_t nargs, const char *name,
 }
 
 
+#undef _PyArg_NoKeywords
+#undef _PyArg_NoStackKeywords
+#undef _PyArg_NoPositional
+
 /* For type constructors that don't take keyword args
  *
  * Sets a TypeError and returns 0 if the args/kwargs is