From bf5589311de8ac2c74e3bd73bef32337a2ce8df2 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Thu, 19 Apr 2018 23:44:18 -0500 Subject: [PATCH] msi: Make MsiGetSummaryInformation() RPC-compatible. Signed-off-by: Zebediah Figura Signed-off-by: Hans Leidekker Signed-off-by: Alexandre Julliard --- dlls/msi/database.c | 5 ++--- dlls/msi/suminfo.c | 17 +++++------------ dlls/msi/tests/custom.c | 11 ++++++++++- dlls/msi/winemsi.idl | 2 +- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/dlls/msi/database.c b/dlls/msi/database.c index 7c0c4a94549..4a0559366dc 100644 --- a/dlls/msi/database.c +++ b/dlls/msi/database.c @@ -1922,10 +1922,9 @@ UINT __cdecl remote_DatabaseGetPrimaryKeys(MSIHANDLE db, LPCWSTR table, struct w return r; } -HRESULT __cdecl remote_DatabaseGetSummaryInformation(MSIHANDLE db, UINT updatecount, MSIHANDLE *suminfo) +UINT __cdecl remote_DatabaseGetSummaryInformation(MSIHANDLE db, UINT updatecount, MSIHANDLE *suminfo) { - UINT r = MsiGetSummaryInformationW(db, NULL, updatecount, suminfo); - return HRESULT_FROM_WIN32(r); + return MsiGetSummaryInformationW(db, NULL, updatecount, suminfo); } UINT __cdecl remote_DatabaseOpenView(MSIHANDLE db, LPCWSTR query, MSIHANDLE *view) diff --git a/dlls/msi/suminfo.c b/dlls/msi/suminfo.c index 782ad6e6dba..288ba402dc5 100644 --- a/dlls/msi/suminfo.c +++ b/dlls/msi/suminfo.c @@ -523,23 +523,16 @@ UINT WINAPI MsiGetSummaryInformationW( MSIHANDLE hDatabase, db = msihandle2msiinfo( hDatabase, MSIHANDLETYPE_DATABASE ); if( !db ) { - MSIHANDLE remote; - HRESULT hr; + MSIHANDLE remote, remote_suminfo; if (!(remote = msi_get_remote(hDatabase))) return ERROR_INVALID_HANDLE; - hr = remote_DatabaseGetSummaryInformation(remote, uiUpdateCount, pHandle); + ret = remote_DatabaseGetSummaryInformation(remote, uiUpdateCount, &remote_suminfo); + if (!ret) + *pHandle = alloc_msi_remote_handle(remote_suminfo); - if (FAILED(hr)) - { - if (HRESULT_FACILITY(hr) == FACILITY_WIN32) - return HRESULT_CODE(hr); - - return ERROR_FUNCTION_FAILED; - } - - return ERROR_SUCCESS; + return ret; } } diff --git a/dlls/msi/tests/custom.c b/dlls/msi/tests/custom.c index cdefefd6cdd..e782311446f 100644 --- a/dlls/msi/tests/custom.c +++ b/dlls/msi/tests/custom.c @@ -243,7 +243,7 @@ static void test_props(MSIHANDLE hinst) static void test_db(MSIHANDLE hinst) { - MSIHANDLE hdb, view, rec, rec2; + MSIHANDLE hdb, view, rec, rec2, suminfo; char buffer[10]; DWORD sz; UINT r; @@ -413,6 +413,15 @@ static void test_db(MSIHANDLE hinst) r = MsiCloseHandle(rec); ok(hinst, !r, "got %u\n", r); + r = MsiGetSummaryInformationA(hdb, NULL, 1, NULL); + ok(hinst, r == ERROR_INVALID_PARAMETER, "got %u\n", r); + + r = MsiGetSummaryInformationA(hdb, NULL, 1, &suminfo); + ok(hinst, !r, "got %u\n", r); + + r = MsiCloseHandle(suminfo); + ok(hinst, !r, "got %u\n", r); + r = MsiCloseHandle(hdb); ok(hinst, !r, "got %u\n", r); } diff --git a/dlls/msi/winemsi.idl b/dlls/msi/winemsi.idl index 28c3ab10003..7613fd3e3ad 100644 --- a/dlls/msi/winemsi.idl +++ b/dlls/msi/winemsi.idl @@ -67,7 +67,7 @@ interface IWineMsiRemote MSICONDITION remote_DatabaseIsTablePersistent( [in] MSIHANDLE db, [in] LPCWSTR table ); UINT remote_DatabaseGetPrimaryKeys( [in] MSIHANDLE db, [in, string] LPCWSTR table, [out] struct wire_record **keys ); - HRESULT remote_DatabaseGetSummaryInformation( [in] MSIHANDLE db, [in] UINT updatecount, [out] MSIHANDLE *suminfo ); + UINT remote_DatabaseGetSummaryInformation( [in] MSIHANDLE db, [in] UINT updatecount, [out] MSIHANDLE *suminfo ); UINT remote_DatabaseOpenView( [in] MSIHANDLE db, [in, string] LPCWSTR query, [out] MSIHANDLE *view ); MSIHANDLE remote_GetActiveDatabase( [in] MSIHANDLE hinst ); -- 2.11.4.GIT