From: Victor Stinner Date: Fri, 19 Aug 2016 16:01:41 +0000 (+0200) Subject: Cleanup call_method() and call_maybe() X-Git-Tag: v3.6.0b1~652 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=94463c980ec8b3f54bd223036ec0363ff4266362;p=python Cleanup call_method() and call_maybe() Issue #27128. Move va_start/va_end around Py_VaBuildValue(). --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 0440180028..10ced8b064 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;