Jacek Caban : vbscript: Make sure to remove an object from object list in collect_objects.

Alexandre Julliard julliard at winehq.org
Fri Oct 14 14:14:48 CDT 2011


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Oct 14 13:51:15 2011 +0200

vbscript: Make sure to remove an object from object list in collect_objects.

---

 dlls/vbscript/vbdisp.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/dlls/vbscript/vbdisp.c b/dlls/vbscript/vbdisp.c
index e22e060..5032f4a 100644
--- a/dlls/vbscript/vbdisp.c
+++ b/dlls/vbscript/vbdisp.c
@@ -495,10 +495,14 @@ void collect_objects(script_ctx_t *ctx)
     LIST_FOR_EACH_ENTRY_SAFE(iter, iter2, &ctx->objects, vbdisp_t, entry)
         run_terminator(iter);
 
-    LIST_FOR_EACH_ENTRY_SAFE(iter, iter2, &ctx->objects, vbdisp_t, entry) {
+    while(!list_empty(&ctx->objects)) {
+        iter = LIST_ENTRY(list_head(&ctx->objects), vbdisp_t, entry);
+
         IDispatchEx_AddRef(&iter->IDispatchEx_iface);
         clean_props(iter);
         iter->desc = NULL;
+        list_remove(&iter->entry);
+        list_init(&iter->entry);
         IDispatchEx_Release(&iter->IDispatchEx_iface);
     }
 }




More information about the wine-cvs mailing list