Author: ion Date: Sat Jul 23 18:43:49 2011 New Revision: 52814
URL: http://svn.reactos.org/svn/reactos?rev=52814&view=rev Log: [KERNEL32]: Fix RemoveHandles, CloseAllProcessHandles...again.
Modified: trunk/reactos/dll/win32/kernel32/client/debugger.c
Modified: trunk/reactos/dll/win32/kernel32/client/debugger.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/d... ============================================================================== --- trunk/reactos/dll/win32/kernel32/client/debugger.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/client/debugger.c [iso-8859-1] Sat Jul 23 18:43:49 2011 @@ -300,11 +300,12 @@ RemoveHandles(IN DWORD dwProcessId, IN DWORD dwThreadId) { - PDBGSS_THREAD_DATA ThreadData, ThisData; + PDBGSS_THREAD_DATA *ThreadData; + PDBGSS_THREAD_DATA ThisData;
/* Loop all thread data events */ - ThreadData = DbgSsGetThreadData(); - for (ThisData = ThreadData; ThisData; ThisData = ThisData->Next) + ThreadData = (PDBGSS_THREAD_DATA*)NtCurrentTeb()->DbgSsReserved; + for (ThisData = *ThreadData; ThisData; ThisData = ThisData->Next) { /* Check if this one matches */ if ((ThisData->HandleMarked) && @@ -315,7 +316,7 @@ if (ThisData->ProcessHandle) CloseHandle(ThisData->ProcessHandle);
/* Unlink the thread data */ - ThreadData->Next = ThisData->Next; + *ThreadData = ThisData->Next;
/* Free it*/ RtlFreeHeap(RtlGetProcessHeap(), 0, ThisData); @@ -323,7 +324,7 @@ else { /* Move to the next one */ - ThreadData = ThisData; + ThreadData = &ThisData->Next; } } } @@ -332,11 +333,12 @@ WINAPI CloseAllProcessHandles(IN DWORD dwProcessId) { - PDBGSS_THREAD_DATA ThreadData, ThisData; + PDBGSS_THREAD_DATA *ThreadData; + PDBGSS_THREAD_DATA ThisData;
/* Loop all thread data events */ - ThreadData = DbgSsGetThreadData(); - for (ThisData = ThreadData; ThisData; ThisData = ThisData->Next) + ThreadData = (PDBGSS_THREAD_DATA*)NtCurrentTeb()->DbgSsReserved; + for (ThisData = *ThreadData; ThisData; ThisData = ThisData->Next) { /* Check if this one matches */ if (ThisData->ProcessId == dwProcessId) @@ -346,7 +348,7 @@ if (ThisData->ProcessHandle) CloseHandle(ThisData->ProcessHandle);
/* Unlink the thread data */ - ThreadData->Next = ThisData->Next; + *ThreadData = ThisData->Next;
/* Free it*/ RtlFreeHeap(RtlGetProcessHeap(), 0, ThisData); @@ -354,7 +356,7 @@ else { /* Move to the next one */ - ThreadData = ThisData; + ThreadData = &ThisData->Next; } } }