[3.12] gh-109181: Fix refleak in tb_get_lineno() (GH-111948)
PyFrame_GetCode() returns a strong reference.
(cherry picked from commit
4b0c875d91727440251a8427a80d8515e39d18cd)
Co-authored-by: Victor Stinner <vstinner@python.org>
tb_get_lineno(PyTracebackObject* tb) {
PyFrameObject* frame = tb->tb_frame;
assert(frame != NULL);
- return PyCode_Addr2Line(PyFrame_GetCode(frame), tb->tb_lasti);
+ PyCodeObject *code = PyFrame_GetCode(frame);
+ int lineno = PyCode_Addr2Line(code, tb->tb_lasti);
+ Py_DECREF(code);
+ return lineno;
}
static PyObject *