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@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,