From a08be2a2f8fc22d245b80222bd0643a56a44d25a Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Mon, 11 Apr 2022 11:40:33 +0300 Subject: [PATCH] hlink: Return requested interface from HlinkCreateFromString(). Signed-off-by: Nikolay Sivov Signed-off-by: Alexandre Julliard --- dlls/hlink/hlink_main.c | 14 +++++++------- dlls/hlink/tests/hlink.c | 11 +++++++++++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/dlls/hlink/hlink_main.c b/dlls/hlink/hlink_main.c index 3f7a3fcd62e..8e269f5f375 100644 --- a/dlls/hlink/hlink_main.c +++ b/dlls/hlink/hlink_main.c @@ -80,7 +80,7 @@ HRESULT WINAPI HlinkCreateFromString( LPCWSTR pwzTarget, LPCWSTR pwzLocation, IUnknown* piunkOuter, REFIID riid, void** ppvObj) { IHlink *hl = NULL; - HRESULT r; + HRESULT hr; WCHAR *hash, *tgt; const WCHAR *loc; @@ -88,9 +88,9 @@ HRESULT WINAPI HlinkCreateFromString( LPCWSTR pwzTarget, LPCWSTR pwzLocation, debugstr_w(pwzLocation), debugstr_w(pwzFriendlyName), pihlsite, dwSiteData, piunkOuter, debugstr_guid(riid), ppvObj); - r = CoCreateInstance(&CLSID_StdHlink, piunkOuter, CLSCTX_INPROC_SERVER, riid, (LPVOID*)&hl); - if (FAILED(r)) - return r; + hr = CoCreateInstance(&CLSID_StdHlink, piunkOuter, CLSCTX_INPROC_SERVER, &IID_IHlink, (void **)&hl); + if (FAILED(hr)) + return hr; if (pwzTarget) { @@ -137,10 +137,10 @@ HRESULT WINAPI HlinkCreateFromString( LPCWSTR pwzTarget, LPCWSTR pwzLocation, if (pihlsite) IHlink_SetHlinkSite(hl, pihlsite, dwSiteData); - TRACE("Returning %lx\n",r); - *ppvObj = hl; + hr = IHlink_QueryInterface(hl, riid, ppvObj); + IHlink_Release(hl); - return r; + return hr; } diff --git a/dlls/hlink/tests/hlink.c b/dlls/hlink/tests/hlink.c index c5c8cd9c81b..3c2e8ebf455 100644 --- a/dlls/hlink/tests/hlink.c +++ b/dlls/hlink/tests/hlink.c @@ -2623,6 +2623,16 @@ static void test_HlinkCreateFromMoniker(void) IMoniker_Release(moniker); } +static void test_HlinkCreateFromString(void) +{ + IPersistStream *stream; + HRESULT hr; + + hr = HlinkCreateFromString(L"http://winehq.org", NULL, NULL, NULL, 0, NULL, &IID_IPersistStream, (void **)&stream); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + IPersistStream_Release(stream); +} + START_TEST(hlink) { CoInitialize(NULL); @@ -2644,6 +2654,7 @@ START_TEST(hlink) test_Hlink_Navigate(); test_HlinkUpdateStackItem(); test_HlinkCreateFromMoniker(); + test_HlinkCreateFromString(); CoUninitialize(); }