Lin Ma writes:
> Signed-off-by: Lin Ma
> ---
> qom/object.c | 6 +-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/qom/object.c b/qom/object.c
> index 7a05e35..4096645 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -747,7 +747,11 @@ ObjectClass *object_get_class(Object *obj)
>
> bool object_class_is_abstract(ObjectClass *klass)
> {
> -return klass->type->abstract;
> +if (type_is_ancestor(klass->type, type_interface)) {
> +return true;
> +} else {
> +return klass->type->abstract;
> +}
> }
>
> const char *object_class_get_name(ObjectClass *klass)
Pardon my ignorance...
If all types derived from type_interface are abstract, why aren't we
setting ->abstract right when such a type is defined?
Hmm, perhaps we do? type_initialize_interface() sets info.abstract =
true...
In case we don't: what about other uses of ->abstract? Why is it okay
not to check whether type_interface is an ancestore there?