diff --git a/dlls/msi/msipriv.h b/dlls/msi/msipriv.h index 55dd2fa9e6b..0aedbf2c908 100644 --- a/dlls/msi/msipriv.h +++ b/dlls/msi/msipriv.h @@ -563,7 +563,7 @@ extern const WCHAR *msi_string_lookup_id( string_table *st, UINT id ); extern UINT msi_string_get_codepage( string_table *st ); -extern BOOL TABLE_Exists( MSIDATABASE *db, LPWSTR name ); +extern BOOL TABLE_Exists( MSIDATABASE *db, LPCWSTR name ); extern MSICONDITION MSI_DatabaseIsTablePersistent( MSIDATABASE *db, LPCWSTR table ); extern UINT read_raw_stream_data( MSIDATABASE*, LPCWSTR stname, diff --git a/dlls/msi/table.c b/dlls/msi/table.c index 420519b7a55..ce5df79e91f 100644 --- a/dlls/msi/table.c +++ b/dlls/msi/table.c @@ -1027,7 +1027,7 @@ static UINT get_tablecolumns( MSIDATABASE *db, } /* try to find the table name in the _Tables table */ -BOOL TABLE_Exists( MSIDATABASE *db, LPWSTR name ) +BOOL TABLE_Exists( MSIDATABASE *db, LPCWSTR name ) { UINT r, table_id = 0, i, count; MSITABLE *table = NULL; @@ -1716,6 +1716,9 @@ MSICONDITION MSI_DatabaseIsTablePersistent( MSIDATABASE *db, LPCWSTR table ) if (!table) return MSICONDITION_ERROR; + if (!TABLE_Exists( db, table )) + return MSICONDITION_NONE; + return MSICONDITION_FALSE; } diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c index dc5e42d0b0e..53599ed5e35 100644 --- a/dlls/msi/tests/db.c +++ b/dlls/msi/tests/db.c @@ -2648,10 +2648,10 @@ static void test_temporary_table(void) cond = MsiDatabaseIsTablePersistent(hdb, "_Columns"); ok( cond == MSICONDITION_NONE, "wrong return condition\n"); + } cond = MsiDatabaseIsTablePersistent(hdb, "_Streams"); ok( cond == MSICONDITION_NONE, "wrong return condition\n"); - } query = "CREATE TABLE `P` ( `B` SHORT NOT NULL, `C` CHAR(255) PRIMARY KEY `C`)"; r = run_query(hdb, 0, query);