qom: Clearer reference counting in object_initialize_childv()

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20200505152926.18877-2-armbru@redhat.com>
This commit is contained in:
Markus Armbruster 2020-05-05 17:29:09 +02:00
parent 013a18edbb
commit 975ac4559c

View File

@ -571,18 +571,18 @@ void object_initialize_childv(Object *parentobj, const char *propname,
}
}
out:
/*
* Since object_property_add_child added a reference to the child object,
* we can drop the reference added by object_initialize(), so the child
* property will own the only reference to the object.
* We want @obj's reference to be 1 on success, 0 on failure.
* On success, it's 2: one taken by object_initialize(), and one
* by object_property_add_child().
* On failure in object_initialize() or earlier, it's 1.
* On failure afterwards, it's also 1: object_unparent() releases
* the reference taken by object_property_add_child().
*/
object_unref(obj);
out:
if (local_err) {
error_propagate(errp, local_err);
object_unref(obj);
}
error_propagate(errp, local_err);
}
static inline bool object_property_is_child(ObjectProperty *prop)