summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Reiter <reiter.christoph@gmail.com>2020-10-06 14:21:33 +0200
committerChristoph Reiter <reiter.christoph@gmail.com>2020-10-06 14:23:15 +0200
commit89e0c07e4aa991af307b113afa474fcdfffe0859 (patch)
tree590111e3135a47cfb9d561fd78277690237aa269
parent5662209157d0ef10725c59570cb480022c6591dc (diff)
downloadgobject-introspection-89e0c07e4aa991af307b113afa474fcdfffe0859.tar.gz
Don't assume Py_TYPE being a macro
It got changed to a function in Python 3.10. Use the Py_SET_TYPE macro suggested at https://docs.python.org/3.10/whatsnew/3.10.html instead. Fixes #358
-rw-r--r--giscanner/giscannermodule.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/giscanner/giscannermodule.c b/giscanner/giscannermodule.c
index 43f8bdea..46bfd105 100644
--- a/giscanner/giscannermodule.c
+++ b/giscanner/giscannermodule.c
@@ -27,10 +27,6 @@
#include <glib-object.h>
-#ifndef Py_TYPE
- #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
-#endif
-
#if PY_MAJOR_VERSION >= 3
#define MOD_INIT(name) PyMODINIT_FUNC PyInit_##name(void)
#define MOD_ERROR_RETURN NULL
@@ -52,8 +48,12 @@ PyTypeObject Py##cname##_Type = { \
0 \
}
+#if PY_VERSION_HEX < 0x030900A4
+# define Py_SET_TYPE(obj, type) ((Py_TYPE(obj) = (type)), (void)0)
+#endif
+
#define REGISTER_TYPE(d, name, type) \
- Py_TYPE(&type) = &PyType_Type; \
+ Py_SET_TYPE(&type, &PyType_Type); \
type.tp_alloc = PyType_GenericAlloc; \
type.tp_new = PyType_GenericNew; \
type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE; \