msi: Destroy streams cache when applying a transform.
authorHans Leidekker <hans@codeweavers.com>
Fri, 19 Feb 2010 11:25:38 +0000 (12:25 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Fri, 19 Feb 2010 12:06:36 +0000 (13:06 +0100)
dlls/msi/database.c

index 7855fea91862e41478fc9bab4a5df3ae2824a318..757be679e552ed97803c214cf837ded1cc9d48cd 100644 (file)
@@ -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;