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