From 89fc75484506ebb5d213a730a9e303bc3a68b706 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Sat, 23 Jul 2011 18:43:49 +0000 Subject: [PATCH] [KERNEL32]: Fix RemoveHandles, CloseAllProcessHandles...again. svn path=/trunk/; revision=52814 --- reactos/dll/win32/kernel32/client/debugger.c | 22 +++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/reactos/dll/win32/kernel32/client/debugger.c b/reactos/dll/win32/kernel32/client/debugger.c index 91997eae084..f32f9667eb0 100644 --- a/reactos/dll/win32/kernel32/client/debugger.c +++ b/reactos/dll/win32/kernel32/client/debugger.c @@ -300,11 +300,12 @@ WINAPI 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 @@ RemoveHandles(IN DWORD dwProcessId, 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 @@ RemoveHandles(IN DWORD dwProcessId, else { /* Move to the next one */ - ThreadData = ThisData; + ThreadData = &ThisData->Next; } } } @@ -332,11 +333,12 @@ VOID 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 @@ CloseAllProcessHandles(IN DWORD dwProcessId) 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 @@ CloseAllProcessHandles(IN DWORD dwProcessId) else { /* Move to the next one */ - ThreadData = ThisData; + ThreadData = &ThisData->Next; } } }