diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2017-02-10 14:19:36 +0100 |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2017-02-10 14:19:36 +0100 |
commit | d2306cec4dc393a106aaac6b7c71a9b241be230d (patch) | |
tree | ce1368518c19fec7fbb18610f3172cb426d734ce /Python/modsupport.c | |
parent | 766af559ad967dcf5b2810331c331fe8773b8ef3 (diff) | |
download | cpython-git-d2306cec4dc393a106aaac6b7c71a9b241be230d.tar.gz |
Backed out changeset f23fa1f7b68f
Sorry, I didn't want to push this change before the review :-( I was pushing a
change into the 2.7 branch.
Diffstat (limited to 'Python/modsupport.c')
-rw-r--r-- | Python/modsupport.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Python/modsupport.c b/Python/modsupport.c index 9637191feb..e9e025bdb2 100644 --- a/Python/modsupport.c +++ b/Python/modsupport.c @@ -586,6 +586,57 @@ va_build_stack(PyObject **small_stack, Py_ssize_t small_stack_len, } +PyObject * +PyEval_CallFunction(PyObject *callable, const char *format, ...) +{ + va_list vargs; + PyObject *args; + PyObject *res; + + va_start(vargs, format); + + args = Py_VaBuildValue(format, vargs); + va_end(vargs); + + if (args == NULL) + return NULL; + + res = PyEval_CallObject(callable, args); + Py_DECREF(args); + + return res; +} + + +PyObject * +PyEval_CallMethod(PyObject *obj, const char *name, const char *format, ...) +{ + va_list vargs; + PyObject *meth; + PyObject *args; + PyObject *res; + + meth = PyObject_GetAttrString(obj, name); + if (meth == NULL) + return NULL; + + va_start(vargs, format); + + args = Py_VaBuildValue(format, vargs); + va_end(vargs); + + if (args == NULL) { + Py_DECREF(meth); + return NULL; + } + + res = PyEval_CallObject(meth, args); + Py_DECREF(meth); + Py_DECREF(args); + + return res; +} + int PyModule_AddObject(PyObject *m, const char *name, PyObject *o) { |