[3/6] msi: Destroy streams cache when applying a transform.

Hans Leidekker hans at codeweavers.com
Fri Feb 19 05:25:38 CST 2010


---
 dlls/msi/database.c |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/dlls/msi/database.c b/dlls/msi/database.c
index 7855fea..757be67 100644
--- a/dlls/msi/database.c
+++ b/dlls/msi/database.c
@@ -225,16 +225,6 @@ end:
     return ret;
 }
 
-void append_storage_to_db( MSIDATABASE *db, IStorage *stg )
-{
-    MSITRANSFORM *t;
-
-    t = msi_alloc( sizeof *t );
-    t->stg = stg;
-    IStorage_AddRef( stg );
-    list_add_tail( &db->transforms, &t->entry );
-}
-
 static void free_transforms( MSIDATABASE *db )
 {
     while( !list_empty( &db->transforms ) )
@@ -259,6 +249,19 @@ static void free_streams( MSIDATABASE *db )
     }
 }
 
+void append_storage_to_db( MSIDATABASE *db, IStorage *stg )
+{
+    MSITRANSFORM *t;
+
+    t = msi_alloc( sizeof *t );
+    t->stg = stg;
+    IStorage_AddRef( stg );
+    list_add_tail( &db->transforms, &t->entry );
+
+    /* the transform may add or replace streams */
+    free_streams( db );
+}
+
 static VOID MSI_CloseDatabase( MSIOBJECTHDR *arg )
 {
     MSIDATABASE *db = (MSIDATABASE *) arg;
-- 
1.6.3.3





More information about the wine-patches mailing list