I thought INVALID_HANDLE_VALUE==-1 and not 0. Moreover, I can't see any code path leading to ERR where handle is allocated (or assigned to) at all so I think there is no need to close it. Mike Hearn wrote:
Mike Hearn <mike(a)plan99.net> Don't close uninitialized handle on VXD error path
diff --git a/dlls/kernel/vxd.c b/dlls/kernel/vxd.c index 5d16684..2a004a0 100644 --- a/dlls/kernel/vxd.c +++ b/dlls/kernel/vxd.c @@ -179,7 +179,7 @@ HANDLE VXD_Open( LPCWSTR filenameW, DWOR { static const WCHAR dotVxDW[] = {'.','v','x','d',0}; int i; - HANDLE handle; + HANDLE handle = INVALID_HANDLE_VALUE; HMODULE module; WCHAR *p, name[16];
@@ -254,10 +254,14 @@ HANDLE VXD_Open( LPCWSTR filenameW, DWOR }
ERR("too many open VxD modules, please report\n" ); - CloseHandle( handle ); + + if (handle) + { + CloseHandle( handle ); + handle = 0; + } FreeLibrary( module ); - handle = 0; - + done: RtlLeaveCriticalSection( &vxd_section ); if (!DuplicateHandle( GetCurrentProcess(), handle, GetCurrentProcess(), &handle, 0,