Module: wine Branch: master Commit: 7abb42a99499b8a9dd11b30f42fe7f945e20c4eb URL: http://source.winehq.org/git/wine.git/?a=commit;h=7abb42a99499b8a9dd11b30f42...
Author: James Hawkins truiken@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);