wbemprox: Remove unused IUnknown *outer parameter from object constructors.

Dmitry Timoshkov dmitry at baikal.ru
Mon Dec 30 03:21:36 CST 2013


The patch also fixes a memory leak in the object creation failure case.

Class factory explicitly checks for it:

if (outer) return CLASS_E_NOAGGREGATION;
obj_constructor(outer, &obj);

i.e. outer is always NULL in the object constructor.
---
 dlls/wbemprox/class.c            | 9 ++++-----
 dlls/wbemprox/main.c             | 7 ++-----
 dlls/wbemprox/qualifier.c        | 5 ++---
 dlls/wbemprox/query.c            | 2 +-
 dlls/wbemprox/services.c         | 8 ++++----
 dlls/wbemprox/wbemlocator.c      | 6 +++---
 dlls/wbemprox/wbemprox_private.h | 8 ++++----
 7 files changed, 20 insertions(+), 25 deletions(-)

diff --git a/dlls/wbemprox/class.c b/dlls/wbemprox/class.c
index 4a8eb1e..58fbbf8 100644
--- a/dlls/wbemprox/class.c
+++ b/dlls/wbemprox/class.c
@@ -152,7 +152,7 @@ static HRESULT WINAPI enum_class_object_Clone(
 
     TRACE("%p, %p\n", iface, ppEnum);
 
-    return EnumWbemClassObject_create( NULL, ec->query, (void **)ppEnum );
+    return EnumWbemClassObject_create( ec->query, (void **)ppEnum );
 }
 
 static HRESULT WINAPI enum_class_object_Skip(
@@ -190,12 +190,11 @@ static const IEnumWbemClassObjectVtbl enum_class_object_vtbl =
     enum_class_object_Skip
 };
 
-HRESULT EnumWbemClassObject_create(
-    IUnknown *pUnkOuter, struct query *query, LPVOID *ppObj )
+HRESULT EnumWbemClassObject_create( struct query *query, LPVOID *ppObj )
 {
     struct enum_class_object *ec;
 
-    TRACE("%p, %p\n", pUnkOuter, ppObj);
+    TRACE("%p\n", ppObj);
 
     ec = heap_alloc( sizeof(*ec) );
     if (!ec) return E_OUTOFMEMORY;
@@ -551,7 +550,7 @@ static HRESULT WINAPI class_object_GetPropertyQualifierSet(
 
     TRACE("%p, %s, %p\n", iface, debugstr_w(wszProperty), ppQualSet);
 
-    return WbemQualifierSet_create( NULL, co->name, wszProperty, (void **)ppQualSet );
+    return WbemQualifierSet_create( co->name, wszProperty, (void **)ppQualSet );
 }
 
 static HRESULT WINAPI class_object_Clone(
diff --git a/dlls/wbemprox/main.c b/dlls/wbemprox/main.c
index 346ee87..d1b08f1 100644
--- a/dlls/wbemprox/main.c
+++ b/dlls/wbemprox/main.c
@@ -37,7 +37,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(wbemprox);
 
 static HINSTANCE instance;
 
-typedef HRESULT (*fnCreateInstance)( IUnknown *pUnkOuter, LPVOID *ppObj );
+typedef HRESULT (*fnCreateInstance)( LPVOID *ppObj );
 
 typedef struct
 {
@@ -87,14 +87,11 @@ static HRESULT WINAPI wbemprox_cf_CreateInstance( IClassFactory *iface, LPUNKNOW
     if (pOuter)
         return CLASS_E_NOAGGREGATION;
 
-    r = This->pfnCreateInstance( pOuter, (LPVOID *)&punk );
+    r = This->pfnCreateInstance( (LPVOID *)&punk );
     if (FAILED(r))
         return r;
 
     r = IUnknown_QueryInterface( punk, riid, ppobj );
-    if (FAILED(r))
-        return r;
-
     IUnknown_Release( punk );
     return r;
 }
diff --git a/dlls/wbemprox/qualifier.c b/dlls/wbemprox/qualifier.c
index b410534..4da3445 100644
--- a/dlls/wbemprox/qualifier.c
+++ b/dlls/wbemprox/qualifier.c
@@ -247,12 +247,11 @@ static const IWbemQualifierSetVtbl qualifier_set_vtbl =
     qualifier_set_EndEnumeration
 };
 
-HRESULT WbemQualifierSet_create(
-    IUnknown *pUnkOuter, const WCHAR *class, const WCHAR *member, LPVOID *ppObj )
+HRESULT WbemQualifierSet_create( const WCHAR *class, const WCHAR *member, LPVOID *ppObj )
 {
     struct qualifier_set *set;
 
-    TRACE("%p, %p\n", pUnkOuter, ppObj);
+    TRACE("%p\n", ppObj);
 
     if (!(set = heap_alloc( sizeof(*set) ))) return E_OUTOFMEMORY;
 
diff --git a/dlls/wbemprox/query.c b/dlls/wbemprox/query.c
index e1a10a4..5134d5b 100644
--- a/dlls/wbemprox/query.c
+++ b/dlls/wbemprox/query.c
@@ -314,7 +314,7 @@ HRESULT exec_query( const WCHAR *str, IEnumWbemClassObject **result )
     if (hr != S_OK) goto done;
     hr = execute_view( query->view );
     if (hr != S_OK) goto done;
-    hr = EnumWbemClassObject_create( NULL, query, (void **)result );
+    hr = EnumWbemClassObject_create( query, (void **)result );
 
 done:
     release_query( query );
diff --git a/dlls/wbemprox/services.c b/dlls/wbemprox/services.c
index ac5eb74..fd87feb 100644
--- a/dlls/wbemprox/services.c
+++ b/dlls/wbemprox/services.c
@@ -282,7 +282,7 @@ static HRESULT WINAPI wbem_services_OpenNamespace(
     if ((strcmpiW( strNamespace, cimv2W ) && strcmpiW( strNamespace, defaultW )) || ws->namespace)
         return WBEM_E_INVALID_NAMESPACE;
 
-    return WbemServices_create( NULL, cimv2W, (void **)ppWorkingNamespace );
+    return WbemServices_create( cimv2W, (void **)ppWorkingNamespace );
 }
 
 static HRESULT WINAPI wbem_services_CancelAsyncCall(
@@ -816,7 +816,7 @@ static HRESULT WINAPI wbem_services_ExecMethod(
     hr = execute_view( query->view );
     if (hr != S_OK) goto done;
 
-    hr = EnumWbemClassObject_create( NULL, query, (void **)&result );
+    hr = EnumWbemClassObject_create( query, (void **)&result );
     if (hr != S_OK) goto done;
 
     hr = create_class_object( query->view->table->name, result, 0, NULL, &obj );
@@ -879,11 +879,11 @@ static const IWbemServicesVtbl wbem_services_vtbl =
     wbem_services_ExecMethodAsync
 };
 
-HRESULT WbemServices_create( IUnknown *pUnkOuter, const WCHAR *namespace, LPVOID *ppObj )
+HRESULT WbemServices_create( const WCHAR *namespace, LPVOID *ppObj )
 {
     struct wbem_services *ws;
 
-    TRACE("(%p,%p)\n", pUnkOuter, ppObj);
+    TRACE("(%p)\n", ppObj);
 
     ws = heap_alloc( sizeof(*ws) );
     if (!ws) return E_OUTOFMEMORY;
diff --git a/dlls/wbemprox/wbemlocator.c b/dlls/wbemprox/wbemlocator.c
index 07bd89f..463e6d4 100644
--- a/dlls/wbemprox/wbemlocator.c
+++ b/dlls/wbemprox/wbemlocator.c
@@ -194,7 +194,7 @@ static HRESULT WINAPI wbem_locator_ConnectServer(
     if (SecurityFlags)
         FIXME("unsupported flags\n");
 
-    hr = WbemServices_create( NULL, namespace, (void **)ppNamespace );
+    hr = WbemServices_create( namespace, (void **)ppNamespace );
     heap_free( namespace );
     heap_free( server );
     if (SUCCEEDED( hr ))
@@ -211,11 +211,11 @@ static const IWbemLocatorVtbl wbem_locator_vtbl =
     wbem_locator_ConnectServer
 };
 
-HRESULT WbemLocator_create( IUnknown *pUnkOuter, LPVOID *ppObj )
+HRESULT WbemLocator_create( LPVOID *ppObj )
 {
     wbem_locator *wl;
 
-    TRACE("(%p,%p)\n", pUnkOuter, ppObj);
+    TRACE("(%p)\n", ppObj);
 
     wl = heap_alloc( sizeof(*wl) );
     if (!wl) return E_OUTOFMEMORY;
diff --git a/dlls/wbemprox/wbemprox_private.h b/dlls/wbemprox/wbemprox_private.h
index 2aed821..81c0fcc 100644
--- a/dlls/wbemprox/wbemprox_private.h
+++ b/dlls/wbemprox/wbemprox_private.h
@@ -207,12 +207,12 @@ void set_variant( VARTYPE, LONGLONG, void *, VARIANT * ) DECLSPEC_HIDDEN;
 HRESULT create_signature( const WCHAR *, const WCHAR *, enum param_direction,
                           IWbemClassObject ** ) DECLSPEC_HIDDEN;
 
-HRESULT WbemLocator_create(IUnknown *, LPVOID *) DECLSPEC_HIDDEN;
-HRESULT WbemServices_create(IUnknown *, const WCHAR *, LPVOID *) DECLSPEC_HIDDEN;
+HRESULT WbemLocator_create(LPVOID *) DECLSPEC_HIDDEN;
+HRESULT WbemServices_create(const WCHAR *, LPVOID *) DECLSPEC_HIDDEN;
 HRESULT create_class_object(const WCHAR *, IEnumWbemClassObject *, UINT,
                             struct record *, IWbemClassObject **) DECLSPEC_HIDDEN;
-HRESULT EnumWbemClassObject_create(IUnknown *, struct query *, LPVOID *) DECLSPEC_HIDDEN;
-HRESULT WbemQualifierSet_create(IUnknown *, const WCHAR *, const WCHAR *, LPVOID *) DECLSPEC_HIDDEN;
+HRESULT EnumWbemClassObject_create(struct query *, LPVOID *) DECLSPEC_HIDDEN;
+HRESULT WbemQualifierSet_create(const WCHAR *, const WCHAR *, LPVOID *) DECLSPEC_HIDDEN;
 
 HRESULT process_get_owner(IWbemClassObject *, IWbemClassObject *, IWbemClassObject **) DECLSPEC_HIDDEN;
 HRESULT reg_enum_key(IWbemClassObject *, IWbemClassObject *, IWbemClassObject **) DECLSPEC_HIDDEN;
-- 
1.8.5.2




More information about the wine-patches mailing list