From patchwork Wed Feb 1 19:50:59 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [18/22] qom: accept any compatible type when setting a link property From: Anthony Liguori X-Patchwork-Id: 139008 Message-Id: <1328125863-6203-19-git-send-email-aliguori@us.ibm.com> To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Anthony Liguori , Andreas Faerber , Peter Maydell Date: Wed, 1 Feb 2012 13:50:59 -0600 Links had limited utility before as they only allowed a concrete type to be specified. Now we can support abstract types and interfaces which means it's now possible to have a link. Signed-off-by: Anthony Liguori --- qom/object.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/qom/object.c b/qom/object.c index 2506d78..49addef 100644 --- a/qom/object.c +++ b/qom/object.c @@ -735,11 +735,12 @@ static void object_set_link_property(Object *obj, Visitor *v, void *opaque, if (target) { gchar *target_type; - target_type = g_strdup_printf("link<%s>", - object_get_typename(OBJECT(target))); - if (strcmp(target_type, type) == 0) { - *child = target; + target_type = g_strdup(&type[5]); + target_type[strlen(target_type) - 2] = 0; + + if (object_dynamic_cast(target, target_type)) { object_ref(target); + *child = target; } else { error_set(errp, QERR_INVALID_PARAMETER_TYPE, name, type); }