diff options
Diffstat (limited to 'Python/ceval.c')
-rw-r--r-- | Python/ceval.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/Python/ceval.c b/Python/ceval.c index 1559456e6b..5110746441 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -2769,9 +2769,12 @@ fast_cfunction(PyObject *func, PyObject ***pp_stack, int na) if (na == 0) return (*meth)(self, NULL); - else if (na == 1) - return (*meth)(self, EXT_POP(*pp_stack)); - else { + else if (na == 1) { + PyObject *arg = EXT_POP(*pp_stack); + PyObject *result = (*meth)(self, arg); + Py_DECREF(arg); + return result; + } else { PyObject *args = load_args(pp_stack, na); PyObject *result = (*meth)(self, args); Py_DECREF(args); |