qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [RFC PATCH v1 4/8] qom: Delete all instances of an overload


From: Peter Crosthwaite
Subject: [Qemu-devel] [RFC PATCH v1 4/8] qom: Delete all instances of an overloaded property
Date: Sun, 14 Jun 2015 15:37:00 -0700

If a property name is overloaded all instances should be deleted by the
deleter.

Signed-off-by: Peter Crosthwaite <address@hidden>
---
 qom/object.c | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/qom/object.c b/qom/object.c
index 46abf41..967ed0d 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -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,
-- 
2.4.3.3.g905f831




reply via email to

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