[Top][All Lists]
[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
- [Qemu-devel] [PULL] qom-next queue, second batch: QBus, API additions and cleanups, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 05/22] qom: Make Object a type, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 01/22] qom: Add object_class_get_parent(), Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 09/22] arm_l2x0: Rename "type" property to "cache-type", Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 03/22] qom: Add object_child_foreach(), Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 16/22] qdev: Move SysBus initialization to sysbus.c, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 20/22] qbus: Initialize in standard way, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 07/22] qom: Assert that public types have a non-NULL parent field,
Andreas Färber <=
- [Qemu-devel] [PATCH 18/22] qdev: Connect busses with their parent devices, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 04/22] qom: Add class_base_init, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 08/22] m48t59: Rename "type" property to "model", Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 22/22] qom: Push error reporting to object_property_find(), Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 10/22] qdev: Push "type" property up to Object, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 06/22] qom: Drop type_register_static_alias() macro, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 02/22] qom: Introduce object_property_is_{child, link}(), Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 11/22] qdev: Move bus properties to a separate global, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 12/22] qdev: Move bus properties to abstract superclasses, Andreas Färber, 2012/06/18
- [Qemu-devel] [PATCH 19/22] qbus: Make child devices links, Andreas Färber, 2012/06/18