Nikolay Sivov : ole32/composite: Fix argument handling in ComposeWith().

Alexandre Julliard julliard at winehq.org
Mon Sep 27 15:21:45 CDT 2021


Module: wine
Branch: master
Commit: 281021d820307fa639e266cdc709931806ced534
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=281021d820307fa639e266cdc709931806ced534

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Sep 27 15:31:40 2021 +0300

ole32/composite: Fix argument handling in ComposeWith().

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ole32/compositemoniker.c | 24 +++++-------------------
 dlls/ole32/tests/moniker.c    | 18 ++++++++++++++++++
 2 files changed, 23 insertions(+), 19 deletions(-)

diff --git a/dlls/ole32/compositemoniker.c b/dlls/ole32/compositemoniker.c
index 60d11b3ba90..40889ae42b2 100644
--- a/dlls/ole32/compositemoniker.c
+++ b/dlls/ole32/compositemoniker.c
@@ -485,28 +485,14 @@ CompositeMonikerImpl_Reduce(IMoniker* iface, IBindCtx* pbc, DWORD dwReduceHowFar
     }
 }
 
-/******************************************************************************
- *        CompositeMoniker_ComposeWith
- ******************************************************************************/
-static HRESULT WINAPI
-CompositeMonikerImpl_ComposeWith(IMoniker* iface, IMoniker* pmkRight,
-               BOOL fOnlyIfNotGeneric, IMoniker** ppmkComposite)
+static HRESULT WINAPI CompositeMonikerImpl_ComposeWith(IMoniker *iface, IMoniker *right,
+        BOOL only_if_not_generic, IMoniker **composite)
 {
-    TRACE("(%p,%p,%d,%p)\n",iface,pmkRight,fOnlyIfNotGeneric,ppmkComposite);
-
-    if ((ppmkComposite==NULL)||(pmkRight==NULL))
-	return E_POINTER;
-
-    *ppmkComposite=0;
-
-    /* If fOnlyIfNotGeneric is TRUE, this method sets *pmkComposite to NULL and returns MK_E_NEEDGENERIC; */
-    /* otherwise, the method returns the result of combining the two monikers by calling the */
-    /* CreateGenericComposite function */
+    TRACE("%p, %p, %d, %p.\n", iface, right, only_if_not_generic, composite);
 
-    if (fOnlyIfNotGeneric)
-        return MK_E_NEEDGENERIC;
+    *composite = NULL;
 
-    return CreateGenericComposite(iface,pmkRight,ppmkComposite);
+    return only_if_not_generic ? MK_E_NEEDGENERIC : CreateGenericComposite(iface, right, composite);
 }
 
 static void composite_get_components(IMoniker *moniker, IMoniker **components, unsigned int *index)
diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index 962ae6c269f..7d88c132d3d 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -3359,6 +3359,24 @@ todo_wine
     IMoniker_Release(moniker2);
     IMoniker_Release(moniker1);
 
+    /* ComposeWith() */
+    hr = create_moniker_from_desc("CI1I2", &moniker1);
+    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+    hr = create_moniker_from_desc("I3", &moniker2);
+    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+    hr = IMoniker_ComposeWith(moniker1, NULL, FALSE, &moniker);
+    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+    ok(moniker == moniker1, "Unexpected pointer.\n");
+    IMoniker_Release(moniker);
+
+    hr = IMoniker_ComposeWith(moniker1, NULL, TRUE, &moniker);
+    ok(hr == MK_E_NEEDGENERIC, "Unexpected hr %#x.\n", hr);
+    ok(!moniker, "Unexpected pointer.\n");
+
+    IMoniker_Release(moniker2);
+    IMoniker_Release(moniker1);
+
     IBindCtx_Release(bindctx);
 }
 




More information about the wine-cvs mailing list