From 21a353616848cf451096f2a5908da611f8174e9c Mon Sep 17 00:00:00 2001 From: Willem Melching Date: Mon, 4 Nov 2019 11:37:17 -0800 Subject: [PATCH] only delete subsocket when created by same object --- messaging/messaging_pyx.pyx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/messaging/messaging_pyx.pyx b/messaging/messaging_pyx.pyx index c51e264b0a85bc..e2ac79cb2b43f7 100644 --- a/messaging/messaging_pyx.pyx +++ b/messaging/messaging_pyx.pyx @@ -23,14 +23,17 @@ cdef class Context: cdef class Poller: cdef cppPoller * poller + cdef list sub_sockets def __cinit__(self): + self.sub_sockets = [] self.poller = cppPoller.create() def __dealloc__(self): del self.poller def registerSocket(self, SubSocket socket): + self.sub_sockets.append(socket) self.poller.registerSocket(socket.socket) def poll(self, timeout): @@ -46,15 +49,21 @@ cdef class Poller: cdef class SubSocket: cdef cppSubSocket * socket + cdef bool is_owner def __cinit__(self): self.socket = cppSubSocket.create() + self.is_owner = True def __dealloc__(self): + if self.is_owner: del self.socket cdef setPtr(self, cppSubSocket * ptr): - del self.socket + if self.is_owner: + del self.socket + + self.is_owner = False self.socket = ptr def connect(self, Context context, string endpoint, bool conflate=False):