[PATCH 3/8] ole32: Simplify CreateClassMoniker().

Nikolay Sivov nsivov at codeweavers.com
Tue Sep 14 03:47:52 CDT 2021


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/ole32/classmoniker.c | 44 ++++++++++-----------------------------
 1 file changed, 11 insertions(+), 33 deletions(-)

diff --git a/dlls/ole32/classmoniker.c b/dlls/ole32/classmoniker.c
index 5f303be037c..c52aaa9fbcf 100644
--- a/dlls/ole32/classmoniker.c
+++ b/dlls/ole32/classmoniker.c
@@ -656,48 +656,26 @@ static const IROTDataVtbl ROTDataVtbl =
     ClassMonikerROTData_GetComparisonData
 };
 
-/******************************************************************************
- *         ClassMoniker_Construct (local function)
- *******************************************************************************/
-static HRESULT ClassMoniker_Construct(ClassMoniker* This, REFCLSID rclsid)
-{
-    TRACE("(%p,%s)\n",This,debugstr_guid(rclsid));
-
-    /* Initialize the virtual function table. */
-    This->IMoniker_iface.lpVtbl = &ClassMonikerVtbl;
-    This->IROTData_iface.lpVtbl = &ROTDataVtbl;
-    This->ref           = 0;
-    This->clsid         = *rclsid;
-    This->pMarshal      = NULL;
-
-    return S_OK;
-}
-
 /******************************************************************************
  *        CreateClassMoniker	[OLE32.@]
  ******************************************************************************/
-HRESULT WINAPI CreateClassMoniker(REFCLSID rclsid, IMoniker **ppmk)
+HRESULT WINAPI CreateClassMoniker(REFCLSID rclsid, IMoniker **moniker)
 {
-    ClassMoniker* newClassMoniker;
-    HRESULT       hr;
+    ClassMoniker *object;
 
-    TRACE("(%s,%p)\n", debugstr_guid(rclsid), ppmk);
+    TRACE("%s, %p\n", debugstr_guid(rclsid), moniker);
 
-    newClassMoniker = HeapAlloc(GetProcessHeap(), 0, sizeof(ClassMoniker));
+    if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
+        return E_OUTOFMEMORY;
 
-    if (!newClassMoniker)
-        return STG_E_INSUFFICIENTMEMORY;
+    object->IMoniker_iface.lpVtbl = &ClassMonikerVtbl;
+    object->IROTData_iface.lpVtbl = &ROTDataVtbl;
+    object->ref = 1;
+    object->clsid = *rclsid;
 
-    hr = ClassMoniker_Construct(newClassMoniker, rclsid);
+    *moniker = &object->IMoniker_iface;
 
-    if (FAILED(hr))
-    {
-        HeapFree(GetProcessHeap(), 0, newClassMoniker);
-        return hr;
-    }
-
-    return ClassMoniker_QueryInterface(&newClassMoniker->IMoniker_iface, &IID_IMoniker,
-                                       (void**)ppmk);
+    return S_OK;
 }
 
 HRESULT ClassMoniker_CreateFromDisplayName(LPBC pbc, LPCOLESTR szDisplayName, LPDWORD pchEaten,
-- 
2.33.0




More information about the wine-devel mailing list