Skip to content

Commit 655b3aa

Browse files
author
Erlend Egeberg Aasland
authored
pythongh-94401: Remove unneeded overlapped module state (python#94403)
1 parent 595baa4 commit 655b3aa

File tree

1 file changed

+6
-43
lines changed

1 file changed

+6
-43
lines changed

Modules/overlapped.c

Lines changed: 6 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -105,18 +105,6 @@ typedef struct {
105105
};
106106
} OverlappedObject;
107107

108-
typedef struct {
109-
PyTypeObject *overlapped_type;
110-
} OverlappedState;
111-
112-
static inline OverlappedState*
113-
overlapped_get_state(PyObject *module)
114-
{
115-
void *state = PyModule_GetState(module);
116-
assert(state != NULL);
117-
return (OverlappedState *)state;
118-
}
119-
120108

121109
static inline void
122110
steal_buffer(Py_buffer * dst, Py_buffer * src)
@@ -1996,28 +1984,6 @@ static PyMethodDef overlapped_functions[] = {
19961984
{NULL}
19971985
};
19981986

1999-
static int
2000-
overlapped_traverse(PyObject *module, visitproc visit, void *arg)
2001-
{
2002-
OverlappedState *state = overlapped_get_state(module);
2003-
Py_VISIT(state->overlapped_type);
2004-
return 0;
2005-
}
2006-
2007-
static int
2008-
overlapped_clear(PyObject *module)
2009-
{
2010-
OverlappedState *state = overlapped_get_state(module);
2011-
Py_CLEAR(state->overlapped_type);
2012-
return 0;
2013-
}
2014-
2015-
static void
2016-
overlapped_free(void *module)
2017-
{
2018-
overlapped_clear((PyObject *)module);
2019-
}
2020-
20211987
#define WINAPI_CONSTANT(fmt, con) \
20221988
do { \
20231989
PyObject *value = Py_BuildValue(fmt, con); \
@@ -2045,14 +2011,15 @@ overlapped_exec(PyObject *module)
20452011
return -1;
20462012
}
20472013

2048-
OverlappedState *st = overlapped_get_state(module);
2049-
st->overlapped_type = (PyTypeObject *)PyType_FromModuleAndSpec(
2014+
PyTypeObject *overlapped_type = (PyTypeObject *)PyType_FromModuleAndSpec(
20502015
module, &overlapped_type_spec, NULL);
2051-
if (st->overlapped_type == NULL) {
2016+
if (overlapped_type == NULL) {
20522017
return -1;
20532018
}
20542019

2055-
if (PyModule_AddType(module, st->overlapped_type) < 0) {
2020+
int rc = PyModule_AddType(module, overlapped_type);
2021+
Py_DECREF(overlapped_type);
2022+
if (rc < 0) {
20562023
return -1;
20572024
}
20582025

@@ -2077,14 +2044,10 @@ static PyModuleDef_Slot overlapped_slots[] = {
20772044
};
20782045

20792046
static struct PyModuleDef overlapped_module = {
2080-
PyModuleDef_HEAD_INIT,
2047+
.m_base = PyModuleDef_HEAD_INIT,
20812048
.m_name = "_overlapped",
2082-
.m_size = sizeof(OverlappedState),
20832049
.m_methods = overlapped_functions,
20842050
.m_slots = overlapped_slots,
2085-
.m_traverse = overlapped_traverse,
2086-
.m_clear = overlapped_clear,
2087-
.m_free = overlapped_free
20882051
};
20892052

20902053
PyMODINIT_FUNC

0 commit comments

Comments
 (0)