James Hawkins : msi: Free each table object when deleting the join view.

Alexandre Julliard julliard at winehq.org
Mon Dec 14 09:51:22 CST 2009


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

Author: James Hawkins <truiken at gmail.com>
Date:   Sun Dec 13 19:36:31 2009 -0800

msi: Free each table object when deleting the join view.

---

 dlls/msi/join.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/dlls/msi/join.c b/dlls/msi/join.c
index 1aeb17c..ef5cede 100644
--- a/dlls/msi/join.c
+++ b/dlls/msi/join.c
@@ -229,14 +229,18 @@ static UINT JOIN_modify( struct tagMSIVIEW *view, MSIMODIFY eModifyMode,
 static UINT JOIN_delete( struct tagMSIVIEW *view )
 {
     MSIJOINVIEW *jv = (MSIJOINVIEW*)view;
-    JOINTABLE *table;
+    struct list *item, *cursor;
 
     TRACE("%p\n", jv );
 
-    LIST_FOR_EACH_ENTRY(table, &jv->tables, JOINTABLE, entry)
+    LIST_FOR_EACH_SAFE(item, cursor, &jv->tables)
     {
+        JOINTABLE* table = LIST_ENTRY(item, JOINTABLE, entry);
+
+        list_remove(&table->entry);
         table->view->ops->delete(table->view);
         table->view = NULL;
+        msi_free(table);
     }
 
     msi_free(jv);




More information about the wine-cvs mailing list