[PATCH] ole32: fix composite moniker behaviour.

Reece Dunn msclrhd at googlemail.com
Mon Mar 1 17:52:39 CST 2010


Hi,

This applies on top of the patch:
    [PATCH] ole32: IMoniker_IsRunning returns E_INVALIDARG when bindctx is NULL.
and fixes the remaining composite moniker tests.

- Reece
-------------- next part --------------
From 2c4755bed57a04f0a7c5e5dbba71d4db8e70394d Mon Sep 17 00:00:00 2001
From: Reece Dunn <msclrhd at gmail.com>
Date: Mon, 1 Mar 2010 23:48:13 +0000
Subject: [PATCH] ole32: fix composite moniker behaviour.

---
 dlls/ole32/compositemoniker.c |    5 ++---
 dlls/ole32/tests/moniker.c    |    2 --
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/dlls/ole32/compositemoniker.c b/dlls/ole32/compositemoniker.c
index 7402b8e..b49c550 100644
--- a/dlls/ole32/compositemoniker.c
+++ b/dlls/ole32/compositemoniker.c
@@ -365,8 +365,7 @@ CompositeMonikerImpl_BindToObject(IMoniker* iface, IBindCtx* pbc,
             /* if the requested class was loaded before ! we don't need to reload it */
             res = IRunningObjectTable_GetObject(prot,iface,(IUnknown**)ppvResult);
 
-            if (res==S_OK)
-                return res;
+            return res==S_OK ? S_OK : E_INVALIDARG;
         }
     }
     else{
@@ -703,7 +702,7 @@ CompositeMonikerImpl_IsRunning(IMoniker* iface, IBindCtx* pbc,
                 IMoniker_Release(tempMk);
                 IMoniker_Release(mostRigthMk);
 
-                return res;
+                return SUCCEEDED(res) ? res : S_FALSE;
             }
         }
 }
diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index b4e3e2f..6576c50 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -1633,14 +1633,12 @@ static void test_generic_composite_moniker(void)
     ok(hr == E_INVALIDARG, "IMoniker_IsRunning should return E_INVALIDARG, not 0x%08x\n", hr);
 
     hr = IMoniker_IsRunning(moniker, bindctx, NULL, NULL);
-    todo_wine
     ok(hr == S_FALSE, "IMoniker_IsRunning should return S_FALSE, not 0x%08x\n", hr);
 
     hr = IMoniker_GetTimeOfLastChange(moniker, bindctx, NULL, &filetime);
     ok(hr == MK_E_NOTBINDABLE, "IMoniker_GetTimeOfLastChange should return MK_E_NOTBINDABLE, not 0x%08x\n", hr);
 
     hr = IMoniker_BindToObject(moniker, bindctx, NULL, &IID_IUnknown, (void **)&unknown);
-    todo_wine
     ok(hr == E_INVALIDARG, "IMoniker_BindToObject should return E_INVALIDARG, not 0x%08x\n", hr);
 
     hr = IMoniker_BindToStorage(moniker, bindctx, NULL, &IID_IUnknown, (void **)&unknown);
-- 
1.6.3.3


More information about the wine-patches mailing list