Fix: bt2: fix reference counting of messages returned by Python components
[babeltrace.git] / src / bindings / python / bt2 / bt2 / message_iterator.py
index bde3afa054a11a1ca4265fae050fd7f9df0ba8e6..b07e2450afc97b46f7b5e46c1198d6f07aeb2853 100644 (file)
@@ -131,9 +131,11 @@ class _UserMessageIterator(_MessageIterator):
 
         utils._check_type(msg, bt2.message._Message)
 
-        # Release the reference to the native part.
-        ptr = msg._release()
-        return int(ptr)
+        # The reference we return will be given to the message array.
+        # However, the `msg` Python object may stay alive, if the user has kept
+        # a reference to it.  Acquire a new reference to account for that.
+        msg._get_ref(msg._ptr)
+        return int(msg._ptr)
 
     def _create_event_message(self, event_class, packet, default_clock_snapshot=None):
         utils._check_type(event_class, bt2.event_class._EventClass)
This page took 0.023531 seconds and 4 git commands to generate.