diff options
Diffstat (limited to 'Modules/gcmodule.c')
-rw-r--r-- | Modules/gcmodule.c | 39 |
1 files changed, 10 insertions, 29 deletions
diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c index f5fea5a..ad13496 100644 --- a/Modules/gcmodule.c +++ b/Modules/gcmodule.c @@ -216,31 +216,21 @@ gc_get_count_impl(PyObject *module) /*[clinic input] gc.get_referrers - *objs as args: object + *objs: tuple Return the list of objects that directly refer to any of 'objs'. [clinic start generated code]*/ static PyObject * -gc_get_referrers_impl(PyObject *module, Py_ssize_t nargs, - PyObject *const *args) -/*[clinic end generated code: output=1d44a7695ea25c40 input=bae96961b14a0922]*/ +gc_get_referrers_impl(PyObject *module, PyObject *objs) +/*[clinic end generated code: output=929d6dff26f609b9 input=9102be7ebee69ee3]*/ { - PyObject *varargs = _PyTuple_FromArray(args, nargs); - - if (!varargs) { - return NULL; - } - if (PySys_Audit("gc.get_referrers", "(O)", varargs) < 0) { - Py_DECREF(varargs); + if (PySys_Audit("gc.get_referrers", "(O)", objs) < 0) { return NULL; } PyInterpreterState *interp = _PyInterpreterState_GET(); - PyObject *result = _PyGC_GetReferrers(interp, varargs); - - Py_DECREF(varargs); - return result; + return _PyGC_GetReferrers(interp, objs); } /* Append obj to list; return true if error (out of memory), false if OK. */ @@ -274,43 +264,34 @@ append_referrents(PyObject *result, PyObject *args) /*[clinic input] gc.get_referents - *objs as args: object + *objs: tuple Return the list of objects that are directly referred to by 'objs'. [clinic start generated code]*/ static PyObject * -gc_get_referents_impl(PyObject *module, Py_ssize_t nargs, - PyObject *const *args) -/*[clinic end generated code: output=e459f3e8c0d19311 input=b3ceab0c34038cbf]*/ +gc_get_referents_impl(PyObject *module, PyObject *objs) +/*[clinic end generated code: output=6dfde40cd1588e1d input=55c078a6d0248fe0]*/ { - PyObject *varargs = _PyTuple_FromArray(args, nargs); - - if (!varargs) { - return NULL; - } - if (PySys_Audit("gc.get_referents", "(O)", varargs) < 0) { - Py_DECREF(varargs); + if (PySys_Audit("gc.get_referents", "(O)", objs) < 0) { return NULL; } PyInterpreterState *interp = _PyInterpreterState_GET(); PyObject *result = PyList_New(0); if (result == NULL) { - Py_DECREF(varargs); return NULL; } // NOTE: stop the world is a no-op in default build _PyEval_StopTheWorld(interp); - int err = append_referrents(result, varargs); + int err = append_referrents(result, objs); _PyEval_StartTheWorld(interp); if (err < 0) { Py_CLEAR(result); } - Py_DECREF(varargs); return result; } |