[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 05/21] qom: assert that public types have a non-NULL
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 05/21] qom: assert that public types have a non-NULL parent field |
Date: |
Wed, 2 May 2012 13:30:57 +0200 |
This protects against unwanted effects of changing TYPE_OBJECT from
NULL to a string. Suggested by Andreas Faerber.
Signed-off-by: Paolo Bonzini <address@hidden>
---
include/qemu/object.h | 1 -
qom/object.c | 14 ++++++++++----
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/include/qemu/object.h b/include/qemu/object.h
index 9c49d99..ec2b382 100644
--- a/include/qemu/object.h
+++ b/include/qemu/object.h
@@ -527,7 +527,6 @@ const char *object_get_typename(Object *obj);
*/
Type type_register_static(const TypeInfo *info);
-#define type_register_static_alias(info, name) do { } while (0)
/**
* type_register:
diff --git a/qom/object.c b/qom/object.c
index 88ec417..e536ece 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -95,7 +95,7 @@ static TypeImpl *type_table_lookup(const char *name)
return g_hash_table_lookup(type_table_get(), name);
}
-TypeImpl *type_register(const TypeInfo *info)
+static TypeImpl *type_register_internal(const TypeInfo *info)
{
TypeImpl *ti = g_malloc0(sizeof(*ti));
@@ -137,6 +137,12 @@ TypeImpl *type_register(const TypeInfo *info)
return ti;
}
+TypeImpl *type_register(const TypeInfo *info)
+{
+ assert(info->parent);
+ return type_register_internal(info);
+}
+
TypeImpl *type_register_static(const TypeInfo *info)
{
return type_register(info);
@@ -204,7 +210,7 @@ static void type_class_interface_init(TypeImpl *ti,
InterfaceImpl *iface)
char *name = g_strdup_printf("<%s::%s>", ti->name, iface->parent);
info.name = name;
- iface->type = type_register(&info);
+ iface->type = type_register_internal(&info);
g_free(name);
}
@@ -1212,8 +1218,8 @@ static void register_types(void)
.abstract = true,
};
- type_interface = type_register_static(&interface_info);
- type_register_static(&object_info);
+ type_interface = type_register_internal(&interface_info);
+ type_register_internal(&object_info);
}
type_init(register_types)
--
1.7.9.3
- Re: [Qemu-devel] [PATCH 02/21] qom: add object_class_get_parent, (continued)
[Qemu-devel] [PATCH 05/21] qom: assert that public types have a non-NULL parent field,
Paolo Bonzini <=
[Qemu-devel] [PATCH 07/21] qdev: fix -device foo,?, Paolo Bonzini, 2012/05/02
[Qemu-devel] [PATCH 08/21] qdev: use object_property_print in info qtree, Paolo Bonzini, 2012/05/02
[Qemu-devel] [PATCH 10/21] qdev: do not propagate properties to subclasses, Paolo Bonzini, 2012/05/02