Module: wine Branch: master Commit: e265d534e4215855233b04cf701fd77c5e427e16 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e265d534e4215855233b04cf70...
Author: Hans Leidekker hans@codeweavers.com Date: Wed Nov 11 11:21:11 2009 +0100
ole32: Return success from OleLockRunning when the object does not support IRunnableObject.
---
dlls/ole32/ole2.c | 4 ++-- dlls/ole32/tests/ole2.c | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-)
diff --git a/dlls/ole32/ole2.c b/dlls/ole32/ole2.c index 3b87aac..c612f33 100644 --- a/dlls/ole32/ole2.c +++ b/dlls/ole32/ole2.c @@ -1140,8 +1140,8 @@ HRESULT WINAPI OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCl
return hres; } - else - return E_INVALIDARG; + + return S_OK; }
diff --git a/dlls/ole32/tests/ole2.c b/dlls/ole32/tests/ole2.c index 214c17e..8d23df5 100644 --- a/dlls/ole32/tests/ole2.c +++ b/dlls/ole32/tests/ole2.c @@ -1556,6 +1556,45 @@ static void test_runnable(void) g_showRunnable = TRUE; }
+static HRESULT WINAPI Unknown_QueryInterface(IUnknown *iface, REFIID riid, void **ppv) +{ + *ppv = NULL; + if (IsEqualIID(riid, &IID_IUnknown)) *ppv = iface; + if (*ppv) + { + IUnknown_AddRef((IUnknown *)*ppv); + return S_OK; + } + return E_NOINTERFACE; +} + +static ULONG WINAPI Unknown_AddRef(IUnknown *iface) +{ + return 2; +} + +static ULONG WINAPI Unknown_Release(IUnknown *iface) +{ + return 1; +} + +static const IUnknownVtbl UnknownVtbl = +{ + Unknown_QueryInterface, + Unknown_AddRef, + Unknown_Release +}; + +static IUnknown Unknown = { &UnknownVtbl }; + +static void test_OleLockRunning(void) +{ + HRESULT hr; + + hr = OleLockRunning((LPUNKNOWN)&Unknown, TRUE, FALSE); + ok(hr == S_OK, "OleLockRunning failed 0x%08x\n", hr); +} + START_TEST(ole2) { DWORD dwRegister; @@ -1587,6 +1626,7 @@ START_TEST(ole2) test_data_cache(); test_default_handler(); test_runnable(); + test_OleLockRunning();
CoUninitialize(); }