[1/3] ole32: Return success from OleLockRunning when the object does not support IRunnableObject.
Hans Leidekker
hans at codeweavers.com
Wed Nov 11 04:21:11 CST 2009
Fixes http://bugs.winehq.org/show_bug.cgi?id=19352
---
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();
}
--
1.6.3.3
More information about the wine-patches
mailing list