Module: wine Branch: master Commit: e931f0e83daa30bc19b6139bfe3987425b9e76ab URL: http://source.winehq.org/git/wine.git/?a=commit;h=e931f0e83daa30bc19b6139bfe...
Author: Sebastian Lackner sebastian@fds-team.de Date: Fri Feb 26 06:11:36 2016 +0100
winedevice: Get rid of global driver_hkey variable and fix some leaks.
Signed-off-by: Sebastian Lackner sebastian@fds-team.de Signed-off-by: Alexandre Julliard julliard@winehq.org
---
programs/winedevice/device.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/programs/winedevice/device.c b/programs/winedevice/device.c index 43963b6..94132ed 100644 --- a/programs/winedevice/device.c +++ b/programs/winedevice/device.c @@ -42,7 +42,6 @@ extern NTSTATUS CDECL wine_ntoskrnl_main_loop( HANDLE stop_event );
static WCHAR *driver_name; static SERVICE_STATUS_HANDLE service_handle; -static HKEY driver_hkey; static HANDLE stop_event; static DRIVER_OBJECT driver_obj; static DRIVER_EXTENSION driver_extension; @@ -203,6 +202,7 @@ static HMODULE load_driver(void) '\','S','e','r','v','i','c','e','s','\',0};
UNICODE_STRING keypath; + HKEY driver_hkey; HMODULE module; LPWSTR path = NULL, str; DWORD type, size; @@ -215,7 +215,7 @@ static HMODULE load_driver(void) { WINE_ERR( "cannot open key %s, err=%u\n", wine_dbgstr_w(str), GetLastError() ); HeapFree( GetProcessHeap(), 0, str); - return FALSE; + return NULL; } RtlInitUnicodeString( &keypath, str );
@@ -231,7 +231,12 @@ static HMODULE load_driver(void) ExpandEnvironmentStringsW(str,path,size); } HeapFree( GetProcessHeap(), 0, str ); - if (!path) return FALSE; + if (!path) + { + RtlFreeUnicodeString( &keypath ); + RegCloseKey( driver_hkey ); + return NULL; + }
if (!strncmpiW( path, systemrootW, 12 )) { @@ -265,12 +270,17 @@ static HMODULE load_driver(void) lstrcatW(path, postfixW); str = path; } + RegCloseKey( driver_hkey );
WINE_TRACE( "loading driver %s\n", wine_dbgstr_w(str) );
module = load_driver_module( str ); HeapFree( GetProcessHeap(), 0, path ); - if (!module) return NULL; + if (!module) + { + RtlFreeUnicodeString( &keypath ); + return NULL; + }
init_driver( module, &keypath ); return module;