From e076d8343f63698355fd52dc2d6983fd1c1a745e Mon Sep 17 00:00:00 2001 From: Rodrigo Tobar Date: Mon, 29 May 2023 12:24:27 +0800 Subject: [PATCH] Obtain gi_code by attribute lookup We were previously getting it by intrusively examining the structure, which was flaky and indeed broke during the transition to 3.12, where the gi_code struct member was re-implemented via get/set methods. This should address #95. Signed-off-by: Rodrigo Tobar --- ijson/backends/yajl2_c/async_reading_generator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ijson/backends/yajl2_c/async_reading_generator.c b/ijson/backends/yajl2_c/async_reading_generator.c index 25947cb..0e52a7d 100644 --- a/ijson/backends/yajl2_c/async_reading_generator.c +++ b/ijson/backends/yajl2_c/async_reading_generator.c @@ -77,7 +77,7 @@ static PyObject *maybe_pop_event(async_reading_generator *self) static int is_gen_coroutine(PyObject *o) { if (PyGen_CheckExact(o)) { - PyCodeObject *code = (PyCodeObject *)((PyGenObject*) o)->gi_code; + PyCodeObject *code = (PyCodeObject *)PyObject_GetAttrString(o, "gi_code"); return code->co_flags & CO_ITERABLE_COROUTINE; } return 0;