qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 07/22] qom: Assert that public types have a non-NULL


From: Andreas Färber
Subject: [Qemu-devel] [PATCH 07/22] qom: Assert that public types have a non-NULL parent field
Date: Mon, 18 Jun 2012 15:58:59 +0200

From: Paolo Bonzini <address@hidden>

This protects against unwanted effects of changing TYPE_OBJECT from
NULL to a string.

Suggested-by: Andreas Färber <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>
---
 qom/object.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/qom/object.c b/qom/object.c
index dac9de5..cec2d40 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);
 }
 
@@ -1239,8 +1245,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.7




reply via email to

[Prev in Thread] Current Thread [Next in Thread]