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

Dmitry Timoshkov dmitry at baikal.ru
Mon Dec 30 03:21:15 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/wuapi/main.c          |  7 ++-----
 dlls/wuapi/session.c       | 10 +++++-----
 dlls/wuapi/wuapi_private.h | 12 ++++++------
 3 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/dlls/wuapi/main.c b/dlls/wuapi/main.c
index b6490eb..0527ee5 100644
--- a/dlls/wuapi/main.c
+++ b/dlls/wuapi/main.c
@@ -35,7 +35,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(wuapi);
 
-typedef HRESULT (*fnCreateInstance)( IUnknown *pUnkOuter, LPVOID *ppObj );
+typedef HRESULT (*fnCreateInstance)( LPVOID *ppObj );
 
 typedef struct _wucf
 {
@@ -85,14 +85,11 @@ static HRESULT WINAPI wucf_CreateInstance( IClassFactory *iface, LPUNKNOWN pOute
     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/wuapi/session.c b/dlls/wuapi/session.c
index a6abbc6..acc7cb0 100644
--- a/dlls/wuapi/session.c
+++ b/dlls/wuapi/session.c
@@ -179,7 +179,7 @@ static HRESULT WINAPI update_session_CreateUpdateSearcher(
     IUpdateSearcher **retval )
 {
     TRACE("%p\n", This);
-    return UpdateSearcher_create( NULL, (LPVOID *)retval );
+    return UpdateSearcher_create( (LPVOID *)retval );
 }
 
 static HRESULT WINAPI update_session_CreateUpdateDownloader(
@@ -187,7 +187,7 @@ static HRESULT WINAPI update_session_CreateUpdateDownloader(
     IUpdateDownloader **retval )
 {
     TRACE("%p\n", This);
-    return UpdateDownloader_create( NULL, (LPVOID *)retval );
+    return UpdateDownloader_create( (LPVOID *)retval );
 }
 
 static HRESULT WINAPI update_session_CreateUpdateInstaller(
@@ -195,7 +195,7 @@ static HRESULT WINAPI update_session_CreateUpdateInstaller(
     IUpdateInstaller **retval )
 {
     TRACE("%p\n", This);
-    return UpdateInstaller_create( NULL, (LPVOID *)retval );
+    return UpdateInstaller_create( (LPVOID *)retval );
 }
 
 static const struct IUpdateSessionVtbl update_session_vtbl =
@@ -217,11 +217,11 @@ static const struct IUpdateSessionVtbl update_session_vtbl =
     update_session_CreateUpdateInstaller
 };
 
-HRESULT UpdateSession_create( IUnknown *pUnkOuter, LPVOID *ppObj )
+HRESULT UpdateSession_create( LPVOID *ppObj )
 {
     update_session *session;
 
-    TRACE("(%p,%p)\n", pUnkOuter, ppObj);
+    TRACE("(%p)\n", ppObj);
 
     session = HeapAlloc( GetProcessHeap(), 0, sizeof(*session) );
     if (!session) return E_OUTOFMEMORY;
diff --git a/dlls/wuapi/wuapi_private.h b/dlls/wuapi/wuapi_private.h
index 444722b..62b6dec 100644
--- a/dlls/wuapi/wuapi_private.h
+++ b/dlls/wuapi/wuapi_private.h
@@ -16,9 +16,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-extern HRESULT AutomaticUpdates_create( IUnknown *pUnkOuter, LPVOID *ppObj ) DECLSPEC_HIDDEN;
-extern HRESULT UpdateSession_create( IUnknown *pUnkOuter, LPVOID *ppObj ) DECLSPEC_HIDDEN;
-extern HRESULT UpdateSearcher_create( IUnknown *pUnkOuter, LPVOID *ppObj ) DECLSPEC_HIDDEN;
-extern HRESULT UpdateDownloader_create( IUnknown *pUnkOuter, LPVOID *ppObj ) DECLSPEC_HIDDEN;
-extern HRESULT UpdateInstaller_create( IUnknown *pUnkOuter, LPVOID *ppObj ) DECLSPEC_HIDDEN;
-extern HRESULT SystemInformation_create(IUnknown *pUnkOuter, LPVOID *ppObj) DECLSPEC_HIDDEN;
+extern HRESULT AutomaticUpdates_create( LPVOID *ppObj ) DECLSPEC_HIDDEN;
+extern HRESULT UpdateSession_create( LPVOID *ppObj ) DECLSPEC_HIDDEN;
+extern HRESULT UpdateSearcher_create( LPVOID *ppObj ) DECLSPEC_HIDDEN;
+extern HRESULT UpdateDownloader_create( LPVOID *ppObj ) DECLSPEC_HIDDEN;
+extern HRESULT UpdateInstaller_create( LPVOID *ppObj ) DECLSPEC_HIDDEN;
+extern HRESULT SystemInformation_create( LPVOID *ppObj ) DECLSPEC_HIDDEN;
-- 
1.8.5.2




More information about the wine-patches mailing list