- Don't duplicate the process handle. - Do close the process and thread handle if the caller doesn't request it. Modified: trunk/reactos/subsys/smss/smapiexec.c _____
Modified: trunk/reactos/subsys/smss/smapiexec.c --- trunk/reactos/subsys/smss/smapiexec.c 2005-05-30 19:45:04 UTC (rev 15686) +++ trunk/reactos/subsys/smss/smapiexec.c 2005-05-30 20:11:44 UTC (rev 15687) @@ -113,24 +113,6 @@
__FUNCTION__, Status); } } - else - { - HANDLE DupProcessHandle = (HANDLE) 0; - - Status = NtDuplicateObject (NtCurrentProcess(), - pProcessInfo->ProcessHandle, - NtCurrentProcess(), - & DupProcessHandle, - PROCESS_ALL_ACCESS, - 0, 0); - if(!NT_SUCCESS(Status)) - { - DPRINT1("SM: %s: NtDuplicateObject failed (Status=0x%08lx)\n", - __FUNCTION__, Status); - } - pProcessInfo->ProcessHandle = DupProcessHandle; - - }
/* Wait for process termination */ if (WaitForIt) @@ -145,6 +127,11 @@ } } + if (NULL == UserProcessInfo) + { + NtClose(pProcessInfo->ProcessHandle); + NtClose(pProcessInfo->ThreadHandle); + } return Status; }