Mike McCormack : msi: Fix handle leaks in the test cases.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Oct 10 06:50:38 CDT 2006
Module: wine
Branch: master
Commit: e9c5e93fda05dba577821f2902dd576947ed973b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e9c5e93fda05dba577821f2902dd576947ed973b
Author: Mike McCormack <mike at codeweavers.com>
Date: Tue Oct 10 15:21:24 2006 +0900
msi: Fix handle leaks in the test cases.
---
dlls/msi/tests/db.c | 31 +++++++++++++++++++------------
dlls/msi/tests/format.c | 1 +
dlls/msi/tests/install.c | 7 +++++--
dlls/msi/tests/package.c | 1 +
4 files changed, 26 insertions(+), 14 deletions(-)
diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c
index a065477..b8ca3d3 100644
--- a/dlls/msi/tests/db.c
+++ b/dlls/msi/tests/db.c
@@ -1313,6 +1313,7 @@ static void test_where(void)
ok( 2 == r, "field wrong\n");
r = MsiRecordGetInteger(rec, 2);
ok( 1 == r, "field wrong\n");
+ MsiCloseHandle( rec );
query = "SELECT `DiskId` FROM `Media` WHERE `LastSequence` >= 1 AND DiskId >= 0";
r = MsiDatabaseOpenView(hdb, query, &view);
@@ -1332,6 +1333,7 @@ static void test_where(void)
ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
ok( !lstrcmp( buf, "2" ),
"For (row %d, column 1) expected '%d', got %s\n", 0, 2, buf );
+ MsiCloseHandle( rec );
r = MsiViewFetch(view, &rec);
ok( r == ERROR_SUCCESS, "failed to fetch view: %d\n", r );
@@ -1341,6 +1343,7 @@ static void test_where(void)
ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
ok( !lstrcmp( buf, "3" ),
"For (row %d, column 1) expected '%d', got %s\n", 1, 3, buf );
+ MsiCloseHandle( rec );
r = MsiViewFetch(view, &rec);
ok( r == ERROR_NO_MORE_ITEMS, "expected no more items: %d\n", r );
@@ -1414,6 +1417,7 @@ static void test_msiimport(void)
ok(check_record(rec, 7, "String"), "Expected String\n");
ok(check_record(rec, 8, "LocalizableString"), "Expected LocalizableString\n");
ok(check_record(rec, 9, "LocalizableStringNullable"), "Expected LocalizableStringNullable\n");
+ MsiCloseHandle(rec);
r = MsiViewGetColumnInfo(view, MSICOLINFO_TYPES, &rec);
count = MsiRecordGetFieldCount(rec);
@@ -1430,6 +1434,7 @@ static void test_msiimport(void)
ok(check_record(rec, 3, "i2"), "Expected i2\n");
ok(check_record(rec, 5, "i4"), "Expected i4\n");
}
+ MsiCloseHandle(rec);
query = "SELECT * FROM `TestTable`";
r = do_query(hdb, query, &rec);
@@ -1508,18 +1513,18 @@ static void test_markers(void)
query = "CREATE TABLE `Mable` ( `?` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`)";
r = run_query(hdb, rec, query);
ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
+ MsiCloseHandle(rec);
/* try column names as markers */
- MsiCloseHandle(rec);
rec = MsiCreateRecord(2);
MsiRecordSetString(rec, 1, "One");
MsiRecordSetString(rec, 2, "Two");
query = "CREATE TABLE `Mable` ( `?` SHORT NOT NULL, `?` CHAR(255) PRIMARY KEY `One`)";
r = run_query(hdb, rec, query);
ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
+ MsiCloseHandle(rec);
/* try names with backticks */
- MsiCloseHandle(rec);
rec = MsiCreateRecord(3);
MsiRecordSetString(rec, 1, "One");
MsiRecordSetString(rec, 2, "Two");
@@ -1537,17 +1542,17 @@ static void test_markers(void)
query = "CREATE TABLE `Mable` ( ? SHORT NOT NULL, ? CHAR(255) PRIMARY KEY ?)";
r = run_query(hdb, rec, query);
ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
+ MsiCloseHandle(rec);
/* try one long marker */
- MsiCloseHandle(rec);
rec = MsiCreateRecord(1);
MsiRecordSetString(rec, 1, "`One` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`");
query = "CREATE TABLE `Mable` ( ? )";
r = run_query(hdb, rec, query);
ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
+ MsiCloseHandle(rec);
/* try all names as markers */
- MsiCloseHandle(rec);
rec = MsiCreateRecord(4);
MsiRecordSetString(rec, 1, "Mable");
MsiRecordSetString(rec, 2, "One");
@@ -1556,6 +1561,7 @@ static void test_markers(void)
query = "CREATE TABLE `?` ( `?` SHORT NOT NULL, `?` CHAR(255) PRIMARY KEY `?`)";
r = run_query(hdb, rec, query);
ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
+ MsiCloseHandle(rec);
/* try a legit insert */
query = "INSERT INTO `Table` ( `One`, `Two` ) VALUES ( 5, 'hello' )";
@@ -1566,16 +1572,15 @@ static void test_markers(void)
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
/* try values as markers */
- MsiCloseHandle(rec);
rec = MsiCreateRecord(2);
MsiRecordSetInteger(rec, 1, 4);
MsiRecordSetString(rec, 2, "hi");
query = "INSERT INTO `Table` ( `One`, `Two` ) VALUES ( ?, '?' )";
r = run_query(hdb, rec, query);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+ MsiCloseHandle(rec);
/* try column names and values as markers */
- MsiCloseHandle(rec);
rec = MsiCreateRecord(4);
MsiRecordSetString(rec, 1, "One");
MsiRecordSetString(rec, 2, "Two");
@@ -1584,26 +1589,26 @@ static void test_markers(void)
query = "INSERT INTO `Table` ( `?`, `?` ) VALUES ( ?, '?' )";
r = run_query(hdb, rec, query);
ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
+ MsiCloseHandle(rec);
/* try column names as markers */
- MsiCloseHandle(rec);
rec = MsiCreateRecord(2);
MsiRecordSetString(rec, 1, "One");
MsiRecordSetString(rec, 2, "Two");
query = "INSERT INTO `Table` ( `?`, `?` ) VALUES ( 3, 'yellow' )";
r = run_query(hdb, rec, query);
ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
+ MsiCloseHandle(rec);
/* try table name as a marker */
- MsiCloseHandle(rec);
rec = MsiCreateRecord(1);
MsiRecordSetString(rec, 1, "Table");
query = "INSERT INTO `?` ( `One`, `Two` ) VALUES ( 2, 'green' )";
r = run_query(hdb, rec, query);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+ MsiCloseHandle(rec);
/* try table name and values as markers */
- MsiCloseHandle(rec);
rec = MsiCreateRecord(3);
MsiRecordSetString(rec, 1, "Table");
MsiRecordSetInteger(rec, 2, 10);
@@ -1611,9 +1616,9 @@ static void test_markers(void)
query = "INSERT INTO `?` ( `One`, `Two` ) VALUES ( ?, '?' )";
r = run_query(hdb, rec, query);
ok(r == ERROR_FUNCTION_FAILED, "Expected ERROR_FUNCTION_FAILED, got %d\n", r);
+ MsiCloseHandle(rec);
/* try all markers */
- MsiCloseHandle(rec);
rec = MsiCreateRecord(5);
MsiRecordSetString(rec, 1, "Table");
MsiRecordSetString(rec, 1, "One");
@@ -1623,18 +1628,18 @@ static void test_markers(void)
query = "INSERT INTO `?` ( `?`, `?` ) VALUES ( ?, '?' )";
r = run_query(hdb, rec, query);
ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
+ MsiCloseHandle(rec);
/* insert an integer as a string */
- MsiCloseHandle(rec);
rec = MsiCreateRecord(2);
MsiRecordSetString(rec, 1, "11");
MsiRecordSetString(rec, 2, "hi");
query = "INSERT INTO `Table` ( `One`, `Two` ) VALUES ( ?, '?' )";
r = run_query(hdb, rec, query);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+ MsiCloseHandle(rec);
/* leave off the '' for the string */
- MsiCloseHandle(rec);
rec = MsiCreateRecord(2);
MsiRecordSetInteger(rec, 1, 12);
MsiRecordSetString(rec, 2, "hi");
@@ -2460,9 +2465,11 @@ static void test_temporary_table(void)
rec = 0;
r = do_query(hdb, "select * from `_Columns` where `Table` = 'T' AND `Name` = 'B'", &rec);
ok( r == ERROR_NO_MORE_ITEMS, "temporary table exists in _Columns\n");
+ if (rec) MsiCloseHandle( rec );
r = do_query(hdb, "select * from `_Columns` where `Table` = 'T' AND `Name` = 'C'", &rec);
ok( r == ERROR_NO_MORE_ITEMS, "temporary table exists in _Columns\n");
+ if (rec) MsiCloseHandle( rec );
}
MsiCloseHandle( hdb );
diff --git a/dlls/msi/tests/format.c b/dlls/msi/tests/format.c
index 9ffcd9f..2a05782 100644
--- a/dlls/msi/tests/format.c
+++ b/dlls/msi/tests/format.c
@@ -2240,6 +2240,7 @@ static void test_formatrecord_tables(voi
DeleteFile( "C:\\I am a really long directory\\temporal.txt" );
RemoveDirectory( "C:\\I am a really long directory" );
+ MsiCloseHandle( hrec );
MsiCloseHandle( hpkg );
DeleteFile( msifile );
}
diff --git a/dlls/msi/tests/install.c b/dlls/msi/tests/install.c
index 94925dc..cc2f71a 100644
--- a/dlls/msi/tests/install.c
+++ b/dlls/msi/tests/install.c
@@ -705,6 +705,7 @@ static void test_packagecoltypes(void)
ok(check_record(rec, 4, "Cabinet"), "wrong column label\n");
ok(check_record(rec, 5, "VolumeLabel"), "wrong column label\n");
ok(check_record(rec, 6, "Source"), "wrong column label\n");
+ MsiCloseHandle(rec);
r = MsiViewGetColumnInfo( view, MSICOLINFO_TYPES, &rec );
count = MsiRecordGetFieldCount( rec );
@@ -720,6 +721,8 @@ static void test_packagecoltypes(void)
ok(check_record(rec, 3, "L64"), "wrong column label\n");
}
+ MsiCloseHandle(rec);
+ MsiCloseHandle(view);
MsiCloseHandle(hdb);
DeleteFile(msifile);
}
@@ -731,10 +734,10 @@ START_TEST(install)
create_test_files();
create_database(msifile, tables, sizeof(tables) / sizeof(msi_table));
-
+
test_MsiInstallProduct();
test_MsiSetComponentState();
test_packagecoltypes();
-
+
delete_test_files();
}
diff --git a/dlls/msi/tests/package.c b/dlls/msi/tests/package.c
index 40cf6d8..550245d 100644
--- a/dlls/msi/tests/package.c
+++ b/dlls/msi/tests/package.c
@@ -2715,6 +2715,7 @@ static void test_installprops(void)
r = MsiGetProperty(hpkg, "DATABASE", buf, &size);
ok( r == ERROR_SUCCESS, "failed to get property: %d\n", r);
ok( !lstrcmp(buf, path), "Expected %s, got %s\n", path, buf);
+ MsiCloseHandle(hpkg);
}
START_TEST(package)
More information about the wine-cvs
mailing list