diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2016-08-19 16:01:41 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2016-08-19 16:01:41 (GMT) |
commit | 94463c980ec8b3f54bd223036ec0363ff4266362 (patch) | |
tree | f1410544870ebd78daba7c5baa8371a70ffbf8b7 | |
parent | 56142c701b90c68a2a37fc23b0d7ba66c25fc3b4 (diff) | |
download | cpython-94463c980ec8b3f54bd223036ec0363ff4266362.zip cpython-94463c980ec8b3f54bd223036ec0363ff4266362.tar.gz cpython-94463c980ec8b3f54bd223036ec0363ff4266362.tar.bz2 |
Cleanup call_method() and call_maybe()
Issue #27128. Move va_start/va_end around Py_VaBuildValue().
-rw-r--r-- | Objects/typeobject.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 0440180..10ced8b 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1425,23 +1425,22 @@ call_method(PyObject *o, _Py_Identifier *nameid, const char *format, ...) { va_list va; PyObject *args, *func = 0, *retval; - va_start(va, format); func = lookup_maybe(o, nameid); if (func == NULL) { - va_end(va); if (!PyErr_Occurred()) PyErr_SetObject(PyExc_AttributeError, nameid->object); return NULL; } - if (format && *format) + if (format && *format) { + va_start(va, format); args = Py_VaBuildValue(format, va); - else + va_end(va); + } + else { args = PyTuple_New(0); - - va_end(va); - + } if (args == NULL) { Py_DECREF(func); return NULL; @@ -1463,23 +1462,22 @@ call_maybe(PyObject *o, _Py_Identifier *nameid, const char *format, ...) { va_list va; PyObject *args, *func = 0, *retval; - va_start(va, format); func = lookup_maybe(o, nameid); if (func == NULL) { - va_end(va); if (!PyErr_Occurred()) Py_RETURN_NOTIMPLEMENTED; return NULL; } - if (format && *format) + if (format && *format) { + va_start(va, format); args = Py_VaBuildValue(format, va); - else + va_end(va); + } + else { args = PyTuple_New(0); - - va_end(va); - + } if (args == NULL) { Py_DECREF(func); return NULL; |