summaryrefslogtreecommitdiff
path: root/qom
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2013-03-18 21:01:37 +0200
committerMichael S. Tsirkin <mst@redhat.com>2013-03-26 21:00:45 +0200
commite998fa8df828ef68ea540a12917d10b4d335c1dd (patch)
tree0e5c1f751a8a63bfab8a9a33a3b27a8c41ecca02 /qom
parent0402a5d65ec004df5345d1f736e2ddaa7aee6665 (diff)
downloadqemu-e998fa8df828ef68ea540a12917d10b4d335c1dd.tar.gz
qemu-e998fa8df828ef68ea540a12917d10b4d335c1dd.tar.bz2
qemu-e998fa8df828ef68ea540a12917d10b4d335c1dd.zip
qom: call class destructor before unparent
It seems more logical to have destruction flow start with the subclass and move up to the base class. This ensures object has a valid canonical path when destructor is called. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'qom')
-rw-r--r--qom/object.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/qom/object.c b/qom/object.c
index 3d638ff273..a0e3cbe559 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -363,12 +363,12 @@ static void object_property_del_child(Object *obj, Object *child, Error **errp)
void object_unparent(Object *obj)
{
object_ref(obj);
- if (obj->parent) {
- object_property_del_child(obj->parent, obj, NULL);
- }
if (obj->class->unparent) {
(obj->class->unparent)(obj);
}
+ if (obj->parent) {
+ object_property_del_child(obj->parent, obj, NULL);
+ }
object_unref(obj);
}