From: Marc-André Lureau <marcandre.lur...@redhat.com>

Since commit 9859fac ("object: release all props"), the code was changed
to tracks the already released properties in a hash table. I am not sure
why this was done, perhaps to prevent from potential crashes if
properties are being added dynamically during release. I am not sure if
it's a valid concern though.

Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
---
 qom/object.c | 18 +++++-------------
 1 file changed, 5 insertions(+), 13 deletions(-)

diff --git a/qom/object.c b/qom/object.c
index 664f0f24ae..a2ccebca6d 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -656,21 +656,13 @@ static void object_property_del_all(Object *obj)
     g_autoptr(GHashTable) done = g_hash_table_new(NULL, NULL);
     ObjectProperty *prop;
     ObjectPropertyIterator iter;
-    bool released;
 
-    do {
-        released = false;
-        object_property_iter_init(&iter, obj);
-        while ((prop = object_property_iter_next(&iter)) != NULL) {
-            if (g_hash_table_add(done, prop)) {
-                if (prop->release) {
-                    prop->release(obj, prop->name, prop->opaque);
-                    released = true;
-                    break;
-                }
-            }
+    object_property_iter_init(&iter, obj);
+    while ((prop = object_property_iter_next(&iter)) != NULL) {
+        if (prop->release) {
+            prop->release(obj, prop->name, prop->opaque);
         }
-    } while (released);
+    }
 
     g_hash_table_unref(obj->properties);
 }
-- 
2.49.0


Reply via email to