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