Fix: release the reference held by a child to its former parent
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 10 Mar 2017 19:11:29 +0000 (14:11 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Sun, 28 May 2017 16:57:38 +0000 (12:57 -0400)
The bt_object class' bt_object_set_parent() increments the reference
count of the parent since the child now holds a reference to it.
This assumes that a child is externally visible when this call is
made (as is always the case currently).

The parent of a child can be changed in the future. In this case,
we want to ensure the reference it held to its former parent is
released.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
include/babeltrace/object-internal.h

index 4bf4def69c070f3182003d5e57feae19d2ad6f2d..5c3ca6d992caa1a029d7cf274057c4a5fcb5e345 100644 (file)
@@ -96,6 +96,7 @@ void bt_object_set_parent(void *child_ptr, void *parent)
         * to the parent will be released once the object's reference count
         * falls to zero.
         */
+       BT_PUT(child->parent);
        child->parent = bt_get(parent);
 }
 
This page took 0.025175 seconds and 4 git commands to generate.