From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54603) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XhIXE-0005c7-AY for qemu-devel@nongnu.org; Thu, 23 Oct 2014 09:34:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XhIX9-0007KF-En for qemu-devel@nongnu.org; Thu, 23 Oct 2014 09:34:36 -0400 Received: from mail-wi0-x234.google.com ([2a00:1450:400c:c05::234]:40675) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XhIX9-0007Jo-9F for qemu-devel@nongnu.org; Thu, 23 Oct 2014 09:34:31 -0400 Received: by mail-wi0-f180.google.com with SMTP id em10so2004482wid.1 for ; Thu, 23 Oct 2014 06:34:30 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Thu, 23 Oct 2014 15:33:54 +0200 Message-Id: <1414071252-7003-7-git-send-email-pbonzini@redhat.com> In-Reply-To: <1414071252-7003-1-git-send-email-pbonzini@redhat.com> References: <1414071252-7003-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PULL 06/24] 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