From 5a72fefe892f86423dde2c338879ea27a6489f03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Thu, 22 Sep 2022 21:53:13 +0700 Subject: [PATCH] plugin: python: fix build for Python 3.11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From Python 3.11, PyFrameObject has been changed into opaque struct. We need to access those fields via API. Signed-off-by: Đoàn Trần Công Danh --- src/plugins/python_api.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/plugins/python_api.c b/src/plugins/python_api.c index 0b91cf70..091b3b4a 100644 --- a/src/plugins/python_api.c +++ b/src/plugins/python_api.c @@ -1619,8 +1619,16 @@ static char* _python_plugin_name(void) { PyThreadState* ts = PyThreadState_Get(); +#if PY_VERSION_HEX >= 0x030B0000 + PyFrameObject* frame = PyThreadState_GetFrame(ts); + PyCodeObject* code = PyFrame_GetCode(frame); + char* filename = python_str_or_unicode_to_string(code->co_filename); + Py_DECREF(code); + Py_DECREF(frame); +#else PyFrameObject* frame = ts->frame; char* filename = python_str_or_unicode_to_string(frame->f_code->co_filename); +#endif gchar** split = g_strsplit(filename, "/", 0); free(filename); char* plugin_name = strdup(split[g_strv_length(split) - 1]);