Alexandre Julliard : server: Restart search from the start when releasing permanent objects at exit.

Alexandre Julliard julliard at winehq.org
Thu Sep 24 15:49:04 CDT 2020


Module: wine
Branch: master
Commit: ab9ded062fe39ba16ea42ed3e1b755975e025853
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=ab9ded062fe39ba16ea42ed3e1b755975e025853

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Sep 24 14:14:22 2020 +0200

server: Restart search from the start when releasing permanent objects at exit.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 server/object.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/server/object.c b/server/object.c
index 77dec733a5..729114ff9c 100644
--- a/server/object.c
+++ b/server/object.c
@@ -67,11 +67,21 @@ void dump_objects(void)
 
 void close_objects(void)
 {
-    struct object *obj, *obj2;
-
     /* release the permanent objects */
-    LIST_FOR_EACH_ENTRY_SAFE( obj, obj2, &object_list, struct object, obj_list )
-        if (obj->is_permanent) release_object( obj );
+    for (;;)
+    {
+        struct object *obj;
+        int found = 0;
+
+        LIST_FOR_EACH_ENTRY( obj, &object_list, struct object, obj_list )
+        {
+            if (!(found = obj->is_permanent)) continue;
+            obj->is_permanent = 0;
+            release_object( obj );
+            break;
+        }
+        if (!found) break;
+    }
 
     dump_objects();  /* dump any remaining objects */
 }




More information about the wine-cvs mailing list