Skip to content

Commit

Permalink
gh-94401: Remove unneeded overlapped module state (#94403)
Browse files Browse the repository at this point in the history
  • Loading branch information
Erlend Egeberg Aasland committed Jun 29, 2022
1 parent 595baa4 commit 655b3aa
Showing 1 changed file with 6 additions and 43 deletions.
49 changes: 6 additions & 43 deletions Modules/overlapped.c
Expand Up @@ -105,18 +105,6 @@ typedef struct {
};
} OverlappedObject;

typedef struct {
PyTypeObject *overlapped_type;
} OverlappedState;

static inline OverlappedState*
overlapped_get_state(PyObject *module)
{
void *state = PyModule_GetState(module);
assert(state != NULL);
return (OverlappedState *)state;
}


static inline void
steal_buffer(Py_buffer * dst, Py_buffer * src)
Expand Down Expand Up @@ -1996,28 +1984,6 @@ static PyMethodDef overlapped_functions[] = {
{NULL}
};

static int
overlapped_traverse(PyObject *module, visitproc visit, void *arg)
{
OverlappedState *state = overlapped_get_state(module);
Py_VISIT(state->overlapped_type);
return 0;
}

static int
overlapped_clear(PyObject *module)
{
OverlappedState *state = overlapped_get_state(module);
Py_CLEAR(state->overlapped_type);
return 0;
}

static void
overlapped_free(void *module)
{
overlapped_clear((PyObject *)module);
}

#define WINAPI_CONSTANT(fmt, con) \
do { \
PyObject *value = Py_BuildValue(fmt, con); \
Expand Down Expand Up @@ -2045,14 +2011,15 @@ overlapped_exec(PyObject *module)
return -1;
}

OverlappedState *st = overlapped_get_state(module);
st->overlapped_type = (PyTypeObject *)PyType_FromModuleAndSpec(
PyTypeObject *overlapped_type = (PyTypeObject *)PyType_FromModuleAndSpec(
module, &overlapped_type_spec, NULL);
if (st->overlapped_type == NULL) {
if (overlapped_type == NULL) {
return -1;
}

if (PyModule_AddType(module, st->overlapped_type) < 0) {
int rc = PyModule_AddType(module, overlapped_type);
Py_DECREF(overlapped_type);
if (rc < 0) {
return -1;
}

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

static struct PyModuleDef overlapped_module = {
PyModuleDef_HEAD_INIT,
.m_base = PyModuleDef_HEAD_INIT,
.m_name = "_overlapped",
.m_size = sizeof(OverlappedState),
.m_methods = overlapped_functions,
.m_slots = overlapped_slots,
.m_traverse = overlapped_traverse,
.m_clear = overlapped_clear,
.m_free = overlapped_free
};

PyMODINIT_FUNC
Expand Down

0 comments on commit 655b3aa

Please sign in to comment.