From d7548bc164c229f57c43e014cc6eb9f10536b86c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Sun, 28 Aug 2011 17:30:25 +0000 Subject: [PATCH] [KERNEL32] - do not access memory that might have been freed svn path=/trunk/; revision=53482 --- reactos/dll/win32/kernel32/client/debugger.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/kernel32/client/debugger.c b/reactos/dll/win32/kernel32/client/debugger.c index e4e695ef46f..c3244f42a55 100644 --- a/reactos/dll/win32/kernel32/client/debugger.c +++ b/reactos/dll/win32/kernel32/client/debugger.c @@ -305,7 +305,8 @@ RemoveHandles(IN DWORD dwProcessId, /* Loop all thread data events */ ThreadData = (PDBGSS_THREAD_DATA*)NtCurrentTeb()->DbgSsReserved; - for (ThisData = *ThreadData; ThisData; ThisData = ThisData->Next) + ThisData = *ThreadData; + while(ThisData) { /* Check if this one matches */ if ((ThisData->HandleMarked) && @@ -326,6 +327,7 @@ RemoveHandles(IN DWORD dwProcessId, /* Move to the next one */ ThreadData = &ThisData->Next; } + ThisData = *ThreadData; } } @@ -338,7 +340,8 @@ CloseAllProcessHandles(IN DWORD dwProcessId) /* Loop all thread data events */ ThreadData = (PDBGSS_THREAD_DATA*)NtCurrentTeb()->DbgSsReserved; - for (ThisData = *ThreadData; ThisData; ThisData = ThisData->Next) + ThisData = *ThreadData; + while(ThisData) { /* Check if this one matches */ if (ThisData->ProcessId == dwProcessId) @@ -358,6 +361,7 @@ CloseAllProcessHandles(IN DWORD dwProcessId) /* Move to the next one */ ThreadData = &ThisData->Next; } + ThisData = *ThreadData; } }