qom: catch errors in object_property_add_child
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Tested-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
parent
28ec2598ff
commit
b0ed5e9fea
11
qom/object.c
11
qom/object.c
@ -988,17 +988,22 @@ static void object_finalize_child_property(Object *obj, const char *name,
|
|||||||
void object_property_add_child(Object *obj, const char *name,
|
void object_property_add_child(Object *obj, const char *name,
|
||||||
Object *child, Error **errp)
|
Object *child, Error **errp)
|
||||||
{
|
{
|
||||||
|
Error *local_err = NULL;
|
||||||
gchar *type;
|
gchar *type;
|
||||||
|
|
||||||
type = g_strdup_printf("child<%s>", object_get_typename(OBJECT(child)));
|
type = g_strdup_printf("child<%s>", object_get_typename(OBJECT(child)));
|
||||||
|
|
||||||
object_property_add(obj, name, type, object_get_child_property,
|
object_property_add(obj, name, type, object_get_child_property, NULL,
|
||||||
NULL, object_finalize_child_property, child, errp);
|
object_finalize_child_property, child, &local_err);
|
||||||
|
if (local_err) {
|
||||||
|
error_propagate(errp, local_err);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
object_ref(child);
|
object_ref(child);
|
||||||
g_assert(child->parent == NULL);
|
g_assert(child->parent == NULL);
|
||||||
child->parent = obj;
|
child->parent = obj;
|
||||||
|
|
||||||
|
out:
|
||||||
g_free(type);
|
g_free(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user