[PATCH 4/6] ole32/pointermoniker: Fix argument handling in RelativePathTo().
Nikolay Sivov
nsivov at codeweavers.com
Tue Sep 28 07:56:30 CDT 2021
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/ole32/pointermoniker.c | 16 ++++++----------
dlls/ole32/tests/moniker.c | 19 ++++++++++++++++++-
2 files changed, 24 insertions(+), 11 deletions(-)
diff --git a/dlls/ole32/pointermoniker.c b/dlls/ole32/pointermoniker.c
index 14cf8af9eaa..aa4a01d9e75 100644
--- a/dlls/ole32/pointermoniker.c
+++ b/dlls/ole32/pointermoniker.c
@@ -368,20 +368,16 @@ static HRESULT WINAPI PointerMonikerImpl_CommonPrefixWith(IMoniker *iface, IMoni
return MK_E_NOPREFIX;
}
-/******************************************************************************
- * PointerMoniker_RelativePathTo
- ******************************************************************************/
-static HRESULT WINAPI
-PointerMonikerImpl_RelativePathTo(IMoniker* iface,IMoniker* pmOther, IMoniker** ppmkRelPath)
+static HRESULT WINAPI PointerMonikerImpl_RelativePathTo(IMoniker *iface, IMoniker *other, IMoniker **result)
{
- TRACE("(%p,%p,%p)\n",iface,pmOther,ppmkRelPath);
+ TRACE("%p, %p, %p.\n", iface, other, result);
- if (ppmkRelPath==NULL)
- return E_POINTER;
+ if (!result)
+ return E_INVALIDARG;
- *ppmkRelPath = NULL;
+ *result = NULL;
- return E_NOTIMPL;
+ return other ? E_NOTIMPL : E_INVALIDARG;
}
/******************************************************************************
diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index a9660354b01..91382da6a02 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -3497,7 +3497,7 @@ todo_wine
static void test_pointer_moniker(void)
{
- IMoniker *moniker, *moniker2, *prefix, *inverse, *anti, *c;
+ IMoniker *moniker, *moniker2, *moniker3, *prefix, *inverse, *anti, *c;
struct test_factory factory;
IEnumMoniker *enummoniker;
DWORD hash, size;
@@ -3726,6 +3726,23 @@ todo_wine
IMoniker_Release(moniker2);
IMoniker_Release(c);
+ /* RelativePathTo() */
+ hr = create_moniker_from_desc("I1", &moniker3);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ hr = IMoniker_RelativePathTo(moniker, NULL, NULL);
+ ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
+ moniker2 = (void *)0xdeadbeef;
+ hr = IMoniker_RelativePathTo(moniker, NULL, &moniker2);
+ ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
+ ok(!moniker2, "Unexpected pointer.\n");
+ hr = IMoniker_RelativePathTo(moniker, moniker3, NULL);
+ ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
+ moniker2 = (void *)0xdeadbeef;
+ hr = IMoniker_RelativePathTo(moniker, moniker3, &moniker2);
+ ok(hr == E_NOTIMPL, "Unexpected hr %#x.\n", hr);
+ ok(!moniker2, "Unexpected pointer.\n");
+ IMoniker_Release(moniker3);
+
IMoniker_Release(moniker);
}
--
2.33.0
More information about the wine-devel
mailing list