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/debugger.c?rev=52814&r1=52813&r2=52814&view=diff
==============================================================================
--- 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;
         }
     }
 }


Reply via email to