From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53884) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xilzj-0004K5-Cb for qemu-devel@nongnu.org; Mon, 27 Oct 2014 11:14:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xilze-0001cf-TW for qemu-devel@nongnu.org; Mon, 27 Oct 2014 11:14:07 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51152) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xilze-0001cY-Mh for qemu-devel@nongnu.org; Mon, 27 Oct 2014 11:14:02 -0400 From: Paolo Bonzini Date: Mon, 27 Oct 2014 16:13:23 +0100 Message-Id: <1414422825-6166-7-git-send-email-pbonzini@redhat.com> In-Reply-To: <1414422825-6166-1-git-send-email-pbonzini@redhat.com> References: <1414422825-6166-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PULL 06/28] qom: Demote already-has-a-parent to a regular error List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Peter Crosthwaite From: Peter Crosthwaite Rather than an abort(). This allows callers to decide whether parenting an already-parented object is a fatal error condition. Useful for providing a default value for an object's parent in the case where you want to set one iff it doesn't already have one. Reviewed-by: Alexander Graf Signed-off-by: Peter Crosthwaite Signed-off-by: Paolo Bonzini --- qom/object.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/qom/object.c b/qom/object.c index c7ef776..1812c73 100644 --- a/qom/object.c +++ b/qom/object.c @@ -1089,6 +1089,11 @@ void object_property_add_child(Object *obj, const char *name, gchar *type; ObjectProperty *op; + if (child->parent != NULL) { + error_setg(errp, "child object is already parented"); + return; + } + type = g_strdup_printf("child<%s>", object_get_typename(OBJECT(child))); op = object_property_add(obj, name, type, object_get_child_property, NULL, @@ -1100,7 +1105,6 @@ void object_property_add_child(Object *obj, const char *name, op->resolve = object_resolve_child_property; object_ref(child); - g_assert(child->parent == NULL); child->parent = obj; out: -- 1.8.3.1