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:
Paolo Bonzini 2013-12-20 23:21:08 +01:00 committed by Luiz Capitulino
parent 28ec2598ff
commit b0ed5e9fea

View File

@ -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);
} }