@@ -153,7 +153,9 @@ overlapped_dealloc(OverlappedObject *self)
153
153
if (self -> write_buffer .obj )
154
154
PyBuffer_Release (& self -> write_buffer );
155
155
Py_CLEAR (self -> read_buffer );
156
- PyObject_Del (self );
156
+ PyTypeObject * tp = PY_TYPE (self );
157
+ tp -> tp_free (self );
158
+ Py_DECREF (tp );
157
159
}
158
160
159
161
/*[clinic input]
@@ -336,10 +338,8 @@ static PyType_Spec winapi_overlapped_type_spec = {
336
338
static OverlappedObject *
337
339
new_overlapped (PyObject * module , HANDLE handle )
338
340
{
339
- OverlappedObject * self ;
340
-
341
341
WinApiState * st = winapi_get_state (module );
342
- self = PyObject_New (OverlappedObject , st -> overlapped_type );
342
+ OverlappedObject * self = PyObject_New (OverlappedObject , st -> overlapped_type );
343
343
if (!self )
344
344
return NULL ;
345
345
@@ -1910,14 +1910,15 @@ static PyMethodDef winapi_functions[] = {
1910
1910
{NULL , NULL }
1911
1911
};
1912
1912
1913
- #define WINAPI_CONSTANT (fmt , con ) { \
1914
- PyObject *value = Py_BuildValue(fmt, con); \
1915
- if (PyDict_SetItemString(d, #con, value) < 0) { \
1913
+ #define WINAPI_CONSTANT (fmt , con ) \
1914
+ do { \
1915
+ PyObject *value = Py_BuildValue(fmt, con); \
1916
+ if (PyDict_SetItemString(d, #con, value) < 0) { \
1917
+ Py_DECREF(value); \
1918
+ return -1; \
1919
+ } \
1916
1920
Py_DECREF(value); \
1917
- return -1; \
1918
- } \
1919
- Py_DECREF(value); \
1920
- }
1921
+ } while (0)
1921
1922
1922
1923
static int winapi_exec (PyObject * m )
1923
1924
{
@@ -1928,9 +1929,7 @@ static int winapi_exec(PyObject *m)
1928
1929
return -1 ;
1929
1930
}
1930
1931
1931
- Py_INCREF (st -> overlapped_type );
1932
1932
if (PyModule_AddType (m , st -> overlapped_type ) < 0 ) {
1933
- Py_DECREF (st -> overlapped_type );
1934
1933
return -1 ;
1935
1934
}
1936
1935
0 commit comments