From e9c5e93fda05dba577821f2902dd576947ed973b Mon Sep 17 00:00:00 2001 From: Mike McCormack Date: Tue, 10 Oct 2006 15:21:24 +0900 Subject: [PATCH] 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 a06547751bb..b8ca3d319fc 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 9ffcd9fdc38..2a0578228bc 100644 --- a/dlls/msi/tests/format.c +++ b/dlls/msi/tests/format.c @@ -2240,6 +2240,7 @@ static void test_formatrecord_tables(void) 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 94925dcf3d7..cc2f71a8f53 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 40cf6d85d31..550245d4914 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) -- 2.11.4.GIT