Skip to content

Commit 502bf99

Browse files
committed
Stop using malloc for UVRequests
1 parent e1e0d81 commit 502bf99

File tree

4 files changed

+8
-29
lines changed

4 files changed

+8
-29
lines changed

uvloop/dns.pyx

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ cdef class AddrInfoRequest(UVRequest):
249249
cdef:
250250
system.addrinfo hints
251251
object callback
252+
uv.uv_getaddrinfo_t _req_data
252253

253254
def __cinit__(self, Loop loop,
254255
bytes host, bytes port,
@@ -283,12 +284,7 @@ cdef class AddrInfoRequest(UVRequest):
283284
self.hints.ai_socktype = type
284285
self.hints.ai_protocol = proto
285286

286-
self.request = <uv.uv_req_t*> PyMem_RawMalloc(
287-
sizeof(uv.uv_getaddrinfo_t))
288-
if self.request is NULL:
289-
self.on_done()
290-
raise MemoryError()
291-
287+
self.request = <uv.uv_req_t*> &self._req_data
292288
self.callback = callback
293289
self.request.data = <void*>self
294290

@@ -307,14 +303,10 @@ cdef class AddrInfoRequest(UVRequest):
307303
cdef class NameInfoRequest(UVRequest):
308304
cdef:
309305
object callback
306+
uv.uv_getnameinfo_t _req_data
310307

311308
def __cinit__(self, Loop loop, callback):
312-
self.request = <uv.uv_req_t*> PyMem_RawMalloc(
313-
sizeof(uv.uv_getnameinfo_t))
314-
if self.request is NULL:
315-
self.on_done()
316-
raise MemoryError()
317-
309+
self.request = <uv.uv_req_t*> &self._req_data
318310
self.callback = callback
319311
self.request.data = <void*>self
320312

uvloop/handles/pipe.pyx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,10 @@ cdef class WriteUnixTransport(UVStream):
176176
cdef class _PipeConnectRequest(UVRequest):
177177
cdef:
178178
UnixTransport transport
179+
uv.uv_connect_t _req_data
179180

180181
def __cinit__(self, loop, transport):
181-
self.request = <uv.uv_req_t*> PyMem_RawMalloc(sizeof(uv.uv_connect_t))
182-
if self.request is NULL:
183-
self.on_done()
184-
raise MemoryError()
182+
self.request = <uv.uv_req_t*> &self._req_data
185183
self.request.data = <void*>self
186184
self.transport = transport
187185

uvloop/handles/tcp.pyx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,12 +179,10 @@ cdef class TCPTransport(UVStream):
179179
cdef class _TCPConnectRequest(UVRequest):
180180
cdef:
181181
TCPTransport transport
182+
uv.uv_connect_t _req_data
182183

183184
def __cinit__(self, loop, transport):
184-
self.request = <uv.uv_req_t*> PyMem_RawMalloc(sizeof(uv.uv_connect_t))
185-
if self.request is NULL:
186-
self.on_done()
187-
raise MemoryError()
185+
self.request = <uv.uv_req_t*>&self._req_data
188186
self.request.data = <void*>self
189187
self.transport = transport
190188

uvloop/request.pyx

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,6 @@ cdef class UVRequest:
1313
self.done = 0
1414
Py_INCREF(self)
1515

16-
def __dealloc__(self):
17-
if self.request is not NULL:
18-
if self.done == 0:
19-
raise RuntimeError(
20-
'Unable to deallocate request for {!r} (not done)'
21-
.format(self))
22-
PyMem_RawFree(self.request)
23-
self.request = NULL
24-
2516
cdef on_done(self):
2617
self.done = 1
2718
Py_DECREF(self)

0 commit comments

Comments
 (0)