[PATCH] wmp: Ignore IMarshal/IRunnableObject interfaces in IOleObject_QueryInterface

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Mon Jul 31 00:59:21 CDT 2017


Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
 dlls/wmp/oleobj.c       | 9 ++++++++-
 dlls/wmp/tests/oleobj.c | 3 +++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/dlls/wmp/oleobj.c b/dlls/wmp/oleobj.c
index 8dcdfbd..acf38f3 100644
--- a/dlls/wmp/oleobj.c
+++ b/dlls/wmp/oleobj.c
@@ -219,6 +219,8 @@ static HRESULT WINAPI OleObject_QueryInterface(IOleObject *iface, REFIID riid, v
 {
     WindowsMediaPlayer *This = impl_from_IOleObject(iface);
 
+    *ppv = NULL;
+
     if(IsEqualGUID(riid, &IID_IUnknown)) {
         TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
         *ppv = &This->IOleObject_iface;
@@ -267,9 +269,14 @@ static HRESULT WINAPI OleObject_QueryInterface(IOleObject *iface, REFIID riid, v
     }else if(IsEqualGUID(riid, &IID_IOleControl)) {
         TRACE("(%p)->(IID_IOleControl %p)\n", This, ppv);
         *ppv = &This->IOleControl_iface;
+    }else if(IsEqualGUID(riid, &IID_IMarshal)) {
+        TRACE("(%p)->(IID_IMarshal %p)\n", This, ppv);
+        return E_NOINTERFACE;
+    }else if(IsEqualGUID(riid, &IID_IQuickActivate)) {
+        TRACE("(%p)->(IID_IQuickActivate %p)\n", This, ppv);
+        return E_NOINTERFACE;
     }else {
         FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
-        *ppv = NULL;
         return E_NOINTERFACE;
     }
 
diff --git a/dlls/wmp/tests/oleobj.c b/dlls/wmp/tests/oleobj.c
index b008af1..3242d0c 100644
--- a/dlls/wmp/tests/oleobj.c
+++ b/dlls/wmp/tests/oleobj.c
@@ -848,6 +848,9 @@ static void test_QI(IUnknown *unk)
     hres = IUnknown_QueryInterface(unk, &IID_IQuickActivate, (void**)&tmp);
     ok(hres == E_NOINTERFACE, "Got IQuickActivate iface when no expected\n");
 
+    hres = IUnknown_QueryInterface(unk, &IID_IMarshal, (void**)&tmp);
+    ok(hres == E_NOINTERFACE, "Could not get IMarshal iface: %08x\n", hres);
+
     hres = IUnknown_QueryInterface(unk, &IID_IOleInPlaceObjectWindowless, (void**)&tmp);
     ok(hres == S_OK, "Could not get IOleInPlaceObjectWindowless iface: %08x\n", hres);
     IUnknown_Release(tmp);
-- 
1.9.1




More information about the wine-patches mailing list