diff --git a/Modules/_winapi.c b/Modules/_winapi.c index 30fcb4e1768..2c034628e34 100644 --- a/Modules/_winapi.c +++ b/Modules/_winapi.c @@ -132,6 +132,7 @@ overlapped_dealloc(OverlappedObject *self) DWORD bytes; int err = GetLastError(); + PyObject_GC_UnTrack(self); if (self->pending) { if (check_CancelIoEx() && Py_CancelIoEx(self->handle, &self->overlapped) && @@ -164,7 +165,6 @@ overlapped_dealloc(OverlappedObject *self) CloseHandle(self->overlapped.hEvent); SetLastError(err); - PyObject_GC_UnTrack(self); if (self->write_buffer.obj) PyBuffer_Release(&self->write_buffer); Py_CLEAR(self->read_buffer);