diff options
| author | Peter Crosthwaite | 2013-02-19 05:02:10 +0100 |
|---|---|---|
| committer | Anthony Liguori | 2013-02-21 23:34:10 +0100 |
| commit | 00e2ceae6c55bef40f5128a3e606f5c44351e0f9 (patch) | |
| tree | 1f217dd1869cf332df015067a33f3494815619ca | |
| parent | qom/object.c: Reset interface list on inheritance (diff) | |
| download | qemu-00e2ceae6c55bef40f5128a3e606f5c44351e0f9.tar.gz qemu-00e2ceae6c55bef40f5128a3e606f5c44351e0f9.tar.xz qemu-00e2ceae6c55bef40f5128a3e606f5c44351e0f9.zip | |
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>
| -rw-r--r-- | qom/object.c | 3 |
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; |
