Mike McCormack : msi: Only load the features and files tables once.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Jul 19 12:32:01 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 9a9195d6e44eeb5048bf1b88e30c09d9f720b580
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=9a9195d6e44eeb5048bf1b88e30c09d9f720b580

Author: Mike McCormack <mike at codeweavers.com>
Date:   Wed Jul 19 17:01:07 2006 +0900

msi: Only load the features and files tables once.

---

 dlls/msi/action.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index 2c0644c..66ff965 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -1315,6 +1315,9 @@ static UINT load_all_files(MSIPACKAGE *p
          '`','F','i','l','e','`',' ', 'O','R','D','E','R',' ','B','Y',' ',
          '`','S','e','q','u','e','n','c','e','`', 0};
 
+    if (!list_empty(&package->files))
+        return ERROR_SUCCESS;
+
     rc = MSI_DatabaseOpenViewW(package->db, Query, &view);
     if (rc != ERROR_SUCCESS)
         return ERROR_SUCCESS;
@@ -1327,16 +1330,16 @@ static UINT load_all_files(MSIPACKAGE *p
 
 
 /*
- * I am not doing any of the costing functionality yet. 
+ * I am not doing any of the costing functionality yet.
  * Mostly looking at doing the Component and Feature loading
  *
  * The native MSI does A LOT of modification to tables here. Mostly adding
- * a lot of temporary columns to the Feature and Component tables. 
+ * a lot of temporary columns to the Feature and Component tables.
  *
  *    note: Native msi also tracks the short filename. But I am only going to
  *          track the long ones.  Also looking at this directory table
  *          it appears that the directory table does not get the parents
- *          resolved base on property only based on their entries in the 
+ *          resolved base on property only based on their entries in the
  *          directory table.
  */
 static UINT ACTION_CostInitialize(MSIPACKAGE *package)
@@ -1353,7 +1356,7 @@ static UINT ACTION_CostInitialize(MSIPAC
 
     if ( 1 == msi_get_property_int( package, szCosting, 0 ) )
         return ERROR_SUCCESS;
-    
+
     MSI_SetPropertyW(package, szCosting, szZero);
     MSI_SetPropertyW(package, cszRootDrive , c_colon);
 
@@ -1361,8 +1364,11 @@ static UINT ACTION_CostInitialize(MSIPAC
     if (rc != ERROR_SUCCESS)
         return rc;
 
-    rc = MSI_IterateRecords(view, NULL, load_feature, package);
-    msiobj_release(&view->hdr);
+    if (list_empty(&package->features))
+    {
+        rc = MSI_IterateRecords(view, NULL, load_feature, package);
+        msiobj_release(&view->hdr);
+    }
 
     load_all_files(package);
 




More information about the wine-cvs mailing list