@@ -798,21 +798,23 @@ ObjectProperty *object_property_find(Object *obj, const char *name,
void object_property_del(Object *obj, const char *name, Error **errp)
{
- ObjectProperty *prop = object_property_find(obj, name, errp);
- if (prop == NULL) {
- return;
- }
+ for (;;) {
+ ObjectProperty *prop = object_property_find(obj, name, errp);
+ if (prop == NULL) {
+ return;
+ }
- if (prop->release) {
- prop->release(obj, name, prop->opaque);
- }
+ if (prop->release) {
+ prop->release(obj, name, prop->opaque);
+ }
- QTAILQ_REMOVE(&obj->properties, prop, node);
+ QTAILQ_REMOVE(&obj->properties, prop, node);
- g_free(prop->name);
- g_free(prop->type);
- g_free(prop->description);
- g_free(prop);
+ g_free(prop->name);
+ g_free(prop->type);
+ g_free(prop->description);
+ g_free(prop);
+ }
}
void object_property_get(Object *obj, Visitor *v, const char *name,
If a property name is overloaded all instances should be deleted by the deleter. Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> --- qom/object.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-)