On 02/02/2012 10:45 AM, Paolo Bonzini wrote:
When a link property's type is an interface, the code expects the
implementation object (not the parent object) to be stored in the
variable.  The parent object does not contain the right vtable.

Signed-off-by: Paolo Bonzini<pbonz...@redhat.com>
---
  qom/object.c |    3 ++-
  1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/qom/object.c b/qom/object.c
index cd517f6..de6484d 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -749,7 +749,8 @@ static void object_set_link_property(Object *obj, Visitor 
*v, void *opaque,
              target_type = g_strdup(&type[5]);
              target_type[strlen(target_type) - 2] = 0;

-            if (object_dynamic_cast(target, target_type)) {
+            target = object_dynamic_cast(target, target_type);
+            if (target) {
                  object_ref(target);
                  *child = target;

Very good catch.

Regards,

Anthony Liguori

              } else {


Reply via email to