python-slip/huawei-fix-sender_seen-memory-leak.patch
2023-03-14 11:44:16 +08:00

49 lines
2.2 KiB
Diff

From 48c8032695fedbd92bb24a2c2d4c3a4d83732409 Mon Sep 17 00:00:00 2001
From: zhuofeng <zhuofeng2@huawei.com>
Date: Mon, 6 Mar 2023 15:19:06 +0800
Subject: [PATCH] fix sender_seen memory leak
---
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..bf4cb77 100644
--- a/slip/dbus/service.py
+++ b/slip/dbus/service.py
@@ -224,11 +224,12 @@ class Object(with_metaclass(InterfaceType, dbus.service.Object)):
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 @@ class Object(with_metaclass(InterfaceType, dbus.service.Object)):
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)
--
2.27.0