changeset: 102760:adceb14cab96 user: Victor Stinner date: Fri Aug 19 16:56:49 2016 +0200 files: Objects/abstract.c description: Cleanup callmethod() Make callmethod() less weird: don't decrement func reference counter, the caller is now responsible to do that. Issue #27128. diff -r 34af2edface9 -r adceb14cab96 Objects/abstract.c --- a/Objects/abstract.c Fri Aug 19 16:50:49 2016 +0200 +++ b/Objects/abstract.c Fri Aug 19 16:56:49 2016 +0200 @@ -2343,9 +2343,10 @@ { PyObject *args, *result; + assert(func != NULL); + if (!PyCallable_Check(func)) { type_error("attribute of type '%.200s' is not callable", func); - Py_XDECREF(func); return NULL; } @@ -2363,7 +2364,6 @@ } result = call_function_tail(func, args); - Py_XDECREF(func); Py_DECREF(args); return result; } @@ -2385,6 +2385,7 @@ va_start(va, format); retval = callmethod(func, format, va, 0); va_end(va); + Py_DECREF(func); return retval; } @@ -2406,6 +2407,7 @@ va_start(va, format); retval = callmethod(func, format, va, 0); va_end(va); + Py_DECREF(func); return retval; } @@ -2426,6 +2428,7 @@ va_start(va, format); retval = callmethod(func, format, va, 1); va_end(va); + Py_DECREF(func); return retval; } @@ -2447,6 +2450,7 @@ va_start(va, format); retval = callmethod(func, format, va, 1); va_end(va); + Py_DECREF(func); return retval; }