Close the desktop handle after getting the object pointer. Modified: trunk/reactos/subsys/win32k/main/dllmain.c _____
Modified: trunk/reactos/subsys/win32k/main/dllmain.c --- trunk/reactos/subsys/win32k/main/dllmain.c 2005-04-09 13:48:31 UTC (rev 14562) +++ trunk/reactos/subsys/win32k/main/dllmain.c 2005-04-09 17:10:25 UTC (rev 14563) @@ -195,23 +195,22 @@
} }
- Win32Thread->hDesktop = hDesk; - - Status = ObReferenceObjectByHandle(hDesk, - 0, - ExDesktopObjectType, - KernelMode, - (PVOID*)&Win32Thread->Desktop, - NULL); - - if(!NT_SUCCESS(Status)) + if (hDesk != NULL) { - DPRINT1("Unable to reference thread desktop handle 0x%x\n", hDesk); - Win32Thread->Desktop = NULL; + Status = ObReferenceObjectByHandle(hDesk, + 0, + ExDesktopObjectType, + KernelMode, + (PVOID*)&Win32Thread->Desktop, + NULL); NtClose(hDesk); + if(!NT_SUCCESS(Status)) + { + DPRINT1("Unable to reference thread desktop handle 0x%x\n", hDesk); + Win32Thread->Desktop = NULL; + } } } - Win32Thread->IsExiting = FALSE; IntDestroyCaret(Win32Thread); Win32Thread->MessageQueue = MsqCreateMessageQueue(Thread);