From 093c351294afc8c9fefb13b3659365d45904adce Mon Sep 17 00:00:00 2001 From: ayin1551 Date: Mon, 6 Mar 2023 21:52:14 +0800 Subject: [PATCH] fix memleak in sender_seen --- slip/dbus/service.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/slip/dbus/service.py b/slip/dbus/service.py index 5d276f8..80b61cd 100644 --- a/slip/dbus/service.py +++ b/slip/dbus/service.py @@ -224,11 +224,12 @@ def _name_owner_changed(self, name, old_owner, new_owner): if not new_owner and (old_owner, conn) in Object.senders: Object.senders.remove((old_owner, conn)) Object.connections_senders[conn].remove(old_owner) + if old_owner in Object.connections_smobjs: + Object.connections_smobjs[old_owner].remove() + del Object.connections_smobjs[old_owner] if len(Object.connections_senders[conn]) == 0: - Object.connections_smobjs[conn].remove() del Object.connections_senders[conn] - del Object.connections_smobjs[conn] if not self.persistent and len(Object.senders) == 0 and \ Object.current_source is None: @@ -251,10 +252,10 @@ def sender_seen(self, sender): Object.senders.add((sender, self.connection)) if self.connection not in Object.connections_senders: Object.connections_senders[self.connection] = set() - Object.connections_smobjs[self.connection] = \ - self.connection.add_signal_receiver( - handler_function=self._name_owner_changed, - signal_name='NameOwnerChanged', - dbus_interface='org.freedesktop.DBus', - arg1=sender) + Object.connections_smobjs[sender] = \ + self.connection.add_signal_receiver( + handler_function=self._name_owner_changed, + signal_name='NameOwnerChanged', + dbus_interface='org.freedesktop.DBus', + arg1=sender) Object.connections_senders[self.connection].add(sender)