Nikolay Sivov : ole32: Respond to CLSID in file moniker interface query.

Alexandre Julliard julliard at winehq.org
Sun Feb 2 12:56:46 CST 2020


Module: wine
Branch: master
Commit: b06281c25bde9f71ce03f47e633113c729a86687
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b06281c25bde9f71ce03f47e633113c729a86687

Author: Nikolay Sivov <nsivov at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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);




More information about the wine-cvs mailing list