Module: wine Branch: master Commit: b06281c25bde9f71ce03f47e633113c729a86687 URL: https://source.winehq.org/git/wine.git/?a=commit;h=b06281c25bde9f71ce03f47e6...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Fri Jan 31 13:37:37 2020 +0300
ole32: Respond to CLSID in file moniker interface query.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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);