diff options
Diffstat (limited to 'Modules')
| -rw-r--r-- | Modules/_operator.c | 15 | 
1 files changed, 7 insertions, 8 deletions
| diff --git a/Modules/_operator.c b/Modules/_operator.c index adeb99e90a..f294769980 100644 --- a/Modules/_operator.c +++ b/Modules/_operator.c @@ -801,7 +801,7 @@ static PyObject *  methodcaller_new(PyTypeObject *type, PyObject *args, PyObject *kwds)  {      methodcallerobject *mc; -    PyObject *name, *newargs; +    PyObject *name;      if (PyTuple_GET_SIZE(args) < 1) {          PyErr_SetString(PyExc_TypeError, "methodcaller needs at least " @@ -814,13 +814,6 @@ methodcaller_new(PyTypeObject *type, PyObject *args, PyObject *kwds)      if (mc == NULL)          return NULL; -    newargs = PyTuple_GetSlice(args, 1, PyTuple_GET_SIZE(args)); -    if (newargs == NULL) { -        Py_DECREF(mc); -        return NULL; -    } -    mc->args = newargs; -      name = PyTuple_GET_ITEM(args, 0);      Py_INCREF(name);      mc->name = name; @@ -828,6 +821,12 @@ methodcaller_new(PyTypeObject *type, PyObject *args, PyObject *kwds)      Py_XINCREF(kwds);      mc->kwds = kwds; +    mc->args = PyTuple_GetSlice(args, 1, PyTuple_GET_SIZE(args)); +    if (mc->args == NULL) { +        Py_DECREF(mc); +        return NULL; +    } +      PyObject_GC_Track(mc);      return (PyObject *)mc;  } | 
