[PATCH 4/5] ole32: Respond to CLSID in file moniker interface query.
Nikolay Sivov
nsivov at codeweavers.com
Fri Jan 31 04:37:37 CST 2020
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/ole32/filemoniker.c | 21 ++++++++-------------
dlls/ole32/tests/moniker.c | 8 ++------
2 files changed, 10 insertions(+), 19 deletions(-)
diff --git a/dlls/ole32/filemoniker.c b/dlls/ole32/filemoniker.c
index 6310a5acd5..e5978169ca 100644
--- a/dlls/ole32/filemoniker.c
+++ b/dlls/ole32/filemoniker.c
@@ -64,28 +64,25 @@ static HRESULT FileMonikerImpl_Destroy(FileMonikerImpl* iface);
/*******************************************************************************
* FileMoniker_QueryInterface
*/
-static HRESULT WINAPI
-FileMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject)
+static HRESULT WINAPI FileMonikerImpl_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
{
FileMonikerImpl *This = impl_from_IMoniker(iface);
- TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject);
+ TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), ppvObject);
- /* Perform a sanity check on the parameters.*/
- if ( ppvObject==0 )
+ if (!ppvObject)
return E_INVALIDARG;
- /* Initialize the return parameter */
*ppvObject = 0;
- /* Compare the riid with the interface IDs implemented by this object.*/
if (IsEqualIID(&IID_IUnknown, riid) ||
IsEqualIID(&IID_IPersist, riid) ||
IsEqualIID(&IID_IPersistStream,riid) ||
- IsEqualIID(&IID_IMoniker, riid)
- )
+ IsEqualIID(&IID_IMoniker, riid) ||
+ IsEqualGUID(&CLSID_FileMoniker, riid))
+ {
*ppvObject = iface;
-
+ }
else if (IsEqualIID(&IID_IROTData, riid))
*ppvObject = &This->IROTData_iface;
else if (IsEqualIID(&IID_IMarshal, riid))
@@ -98,11 +95,9 @@ FileMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject)
return IUnknown_QueryInterface(This->pMarshal, riid, ppvObject);
}
- /* Check that we obtained an interface.*/
- if ((*ppvObject)==0)
+ if (!*ppvObject)
return E_NOINTERFACE;
- /* Query Interface always increases the reference count by one when it is successful */
IMoniker_AddRef(iface);
return S_OK;
diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index e0a87e0701..b22cf84946 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -1877,13 +1877,9 @@ static void test_file_moniker(WCHAR* path)
ok_ole_success(hr, CreateFileMoniker);
hr = IMoniker_QueryInterface(moniker1, &CLSID_FileMoniker, (void **)&unk);
-todo_wine
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
- if (SUCCEEDED(hr))
- {
- ok(unk == (IUnknown *)moniker1, "Unexpected interface.\n");
- IUnknown_Release(unk);
- }
+ ok(unk == (IUnknown *)moniker1, "Unexpected interface.\n");
+ IUnknown_Release(unk);
hr = IMoniker_Inverse(moniker1, &inverse);
ok(hr == S_OK, "Failed to get inverse, hr %#x.\n", hr);
--
2.24.1
More information about the wine-devel
mailing list