diff options
authorPeter Crosthwaite <peter.crosthwaite@xilinx.com>2013-02-19 14:02:10 +1000
committerAnthony Liguori <aliguori@us.ibm.com>2013-02-21 16:34:10 -0600
commit00e2ceae6c55bef40f5128a3e606f5c44351e0f9 (patch)
parent3e407de47700cce4babbe0f3ac35677e7b852cf6 (diff)
qom/object.c: Allow itf cast with num_itfs = 0
num_interfaces only tells you how many interfaces the concrete child class has (as defined in the TypeInfo). This means if you have a child class which defines no interfaces of its own, but its parent has interfaces you cannot cast to those parent interfaces. Fixed changing the guard to check the class->interfaces list instead (which is a complete flattened list of implemented interfaces). Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Message-id: a8c2db3b9b1f3c4bb81aca352b69e33260f36545.1361246206.git.peter.crosthwaite@xilinx.com Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
1 files changed, 2 insertions, 1 deletions
diff --git a/qom/object.c b/qom/object.c
index 4b72a64337..3d638ff273 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -449,7 +449,8 @@ ObjectClass *object_class_dynamic_cast(ObjectClass *class,
TypeImpl *type = class->type;
ObjectClass *ret = NULL;
- if (type->num_interfaces && type_is_ancestor(target_type, type_interface)) {
+ if (type->class->interfaces &&
+ type_is_ancestor(target_type, type_interface)) {
int found = 0;
GSList *i;