[Sugar-devel] [sugar PATCH] sl#3326: Do not attach any signals to the dangling-connection-object after it has called the "__connection_ready_cb" callback.

Ajay Garg ajay at activitycentral.com
Wed Jul 25 16:52:42 EDT 2012


Thanks to Jerry Vonau, for inspiring and guiding me to solve this :-)


 src/jarabe/model/neighborhood.py |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/src/jarabe/model/neighborhood.py b/src/jarabe/model/neighborhood.py
index 39f648e..5692ca9 100644
--- a/src/jarabe/model/neighborhood.py
+++ b/src/jarabe/model/neighborhood.py
@@ -260,6 +260,25 @@ class _Account(gobject.GObject):
                                       ready_handler=self.__connection_ready_cb)
 
     def __connection_ready_cb(self, connection):
+        # http://bugs.sugarlabs.org/ticket/3326
+        #
+        # Daniel Drake has given a comprehensive description of the
+        # issue. So the fix is that, when the
+        # dangling-connection-object calls the "__connection_ready_cb",
+        # check to see if it is the same as the referenced
+        # "self._connection" object. If not, simply return; this would
+        # have the following consequences ::
+        #
+        #  (i)
+        #  not connect any more signals to the
+        #  dangling-connection-object.
+        #
+        #  (ii)
+        #  the dangling-connection-object would finally be
+        #  garbage-collected.
+        if connection != self._connection:
+            return
+
         logging.debug('_Account.__connection_ready_cb %r',
                       connection.object_path)
         connection.connect_to_signal('StatusChanged',
-- 
1.7.4.4



More information about the Sugar-devel mailing list