bpo-39968: Convert extension modules' macros of get_module_state() to inline functions (GH-19017)
diff --git a/Modules/_curses_panel.c b/Modules/_curses_panel.c
index c18af7e..77a6a14 100644
--- a/Modules/_curses_panel.c
+++ b/Modules/_curses_panel.c
@@ -21,19 +21,25 @@
PyObject *PyCursesPanel_Type;
} _curses_panelstate;
-#define _curses_panelstate(o) ((_curses_panelstate *)PyModule_GetState(o))
+static inline _curses_panelstate*
+get_curses_panelstate(PyObject *module)
+{
+ void *state = PyModule_GetState(module);
+ assert(state != NULL);
+ return (_curses_panelstate *)state;
+}
static int
_curses_panel_clear(PyObject *m)
{
- Py_CLEAR(_curses_panelstate(m)->PyCursesError);
+ Py_CLEAR(get_curses_panelstate(m)->PyCursesError);
return 0;
}
static int
_curses_panel_traverse(PyObject *m, visitproc visit, void *arg)
{
- Py_VISIT(_curses_panelstate(m)->PyCursesError);
+ Py_VISIT(get_curses_panelstate(m)->PyCursesError);
return 0;
}
@@ -645,15 +651,15 @@
if (v == NULL)
goto fail;
((PyTypeObject *)v)->tp_new = NULL;
- _curses_panelstate(m)->PyCursesPanel_Type = v;
+ get_curses_panelstate(m)->PyCursesPanel_Type = v;
import_curses();
if (PyErr_Occurred())
goto fail;
/* For exception _curses_panel.error */
- _curses_panelstate(m)->PyCursesError = PyErr_NewException("_curses_panel.error", NULL, NULL);
- PyDict_SetItemString(d, "error", _curses_panelstate(m)->PyCursesError);
+ get_curses_panelstate(m)->PyCursesError = PyErr_NewException("_curses_panel.error", NULL, NULL);
+ PyDict_SetItemString(d, "error", get_curses_panelstate(m)->PyCursesError);
/* Make the version available */
v = PyUnicode_FromString(PyCursesVersion);
@@ -661,8 +667,9 @@
PyDict_SetItemString(d, "__version__", v);
Py_DECREF(v);
- Py_INCREF(_curses_panelstate(m)->PyCursesPanel_Type);
- PyModule_AddObject(m, "panel", (PyObject *)_curses_panelstate(m)->PyCursesPanel_Type);
+ Py_INCREF(get_curses_panelstate(m)->PyCursesPanel_Type);
+ PyModule_AddObject(m, "panel",
+ (PyObject *)get_curses_panelstate(m)->PyCursesPanel_Type);
return m;
fail:
Py_XDECREF(m);