[1/2] msi: Don't free cached tables in MsiDatabaseCommit.
Hans Leidekker
hans at codeweavers.com
Thu Apr 26 04:18:31 CDT 2012
Fix for http://bugs.winehq.org/show_bug.cgi?id=30516
---
dlls/msi/table.c | 3 ---
dlls/msi/tests/package.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+), 3 deletions(-)
diff --git a/dlls/msi/table.c b/dlls/msi/table.c
index 54743bd..dd25fbb 100644
--- a/dlls/msi/table.c
+++ b/dlls/msi/table.c
@@ -2195,9 +2195,6 @@ UINT MSI_CommitTables( MSIDATABASE *db )
}
}
- /* force everything to reload next time */
- free_cached_tables( db );
-
hr = IStorage_Commit( db->storage, 0 );
if (FAILED( hr ))
{
diff --git a/dlls/msi/tests/package.c b/dlls/msi/tests/package.c
index fc77c03..8cf8f27 100644
--- a/dlls/msi/tests/package.c
+++ b/dlls/msi/tests/package.c
@@ -8746,6 +8746,52 @@ error:
DeleteFileA( msifile );
}
+static void test_MsiDatabaseCommit(void)
+{
+ UINT r;
+ MSIHANDLE hdb, hpkg = 0;
+ char buf[32], package[12];
+ DWORD sz;
+
+ hdb = create_package_db();
+ ok( hdb, "failed to create database\n" );
+
+ r = create_property_table( hdb );
+ ok( r == ERROR_SUCCESS, "can't create Property table %u\n", r );
+
+ sprintf( package, "#%u", hdb );
+ r = MsiOpenPackage( package, &hpkg );
+ if (r == ERROR_INSTALL_PACKAGE_REJECTED)
+ {
+ skip("Not enough rights to perform tests\n");
+ goto error;
+ }
+ ok( r == ERROR_SUCCESS, "got %u\n", r );
+
+ r = MsiSetPropertyA( hpkg, "PROP", "value" );
+ ok( r == ERROR_SUCCESS, "got %u\n", r );
+
+ buf[0] = 0;
+ sz = sizeof(buf);
+ r = MsiGetPropertyA( hpkg, "PROP", buf, &sz );
+ ok( r == ERROR_SUCCESS, "MsiGetPropertyA returned %u\n", r );
+ ok( !lstrcmpA( buf, "value" ), "got \"%s\"\n", buf );
+
+ r = MsiDatabaseCommit( hdb );
+ ok( r == ERROR_SUCCESS, "MsiDatabaseCommit returned %u\n", r );
+
+ buf[0] = 0;
+ sz = sizeof(buf);
+ r = MsiGetPropertyA( hpkg, "PROP", buf, &sz );
+ ok( r == ERROR_SUCCESS, "MsiGetPropertyA returned %u\n", r );
+ ok( !lstrcmpA( buf, "value" ), "got \"%s\"\n", buf );
+
+ MsiCloseHandle( hpkg );
+error:
+ MsiCloseHandle( hdb );
+ DeleteFileA( msifile );
+}
+
START_TEST(package)
{
STATEMGRSTATUS status;
@@ -8802,6 +8848,7 @@ START_TEST(package)
test_MsiApplyMultiplePatches();
test_MsiApplyPatch();
test_MsiEnumComponentCosts();
+ test_MsiDatabaseCommit();
if (pSRSetRestorePointA && !pMsiGetComponentPathExA && ret)
{
--
1.7.10
More information about the wine-patches
mailing list