Same here! This will break things. We should not be overriding the proper
handling of the exception filters.
Best regards,
Alex Ionescu
On Sun, Oct 28, 2018 at 9:03 AM Mark Jansen <mark.jansen(a)reactos.org> wrote:
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=824e5dba51aca08204045…
commit 824e5dba51aca08204045e440be9c253a8469ac2
Author: Mark Jansen <mark.jansen(a)reactos.org>
AuthorDate: Sat Oct 20 15:38:21 2018 +0200
Commit: Mark Jansen <mark.jansen(a)reactos.org>
CommitDate: Sun Oct 28 13:01:38 2018 +0100
[KERNEL32] Directly use UnhandledExceptionFilter in BaseProcessStartup
---
dll/win32/kernel32/client/proc.c | 29 +----------------------------
1 file changed, 1 insertion(+), 28 deletions(-)
diff --git a/dll/win32/kernel32/client/proc.c
b/dll/win32/kernel32/client/proc.c
index dbd5c10d0f..f36219457b 100644
--- a/dll/win32/kernel32/client/proc.c
+++ b/dll/win32/kernel32/client/proc.c
@@ -445,33 +445,6 @@ BasepSxsCloseHandles(IN PBASE_MSG_SXS_HANDLES Handles)
}
}
-static
-LONG BaseExceptionFilter(EXCEPTION_POINTERS *ExceptionInfo)
-{
- LONG ExceptionDisposition = EXCEPTION_EXECUTE_HANDLER;
- LPTOP_LEVEL_EXCEPTION_FILTER RealFilter;
- RealFilter = RtlDecodePointer(GlobalTopLevelExceptionFilter);
-
- if (RealFilter != NULL)
- {
- _SEH2_TRY
- {
- ExceptionDisposition = RealFilter(ExceptionInfo);
- }
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
- {
- }
- _SEH2_END;
- }
- if ((ExceptionDisposition == EXCEPTION_CONTINUE_SEARCH ||
ExceptionDisposition == EXCEPTION_EXECUTE_HANDLER) &&
- RealFilter != UnhandledExceptionFilter)
- {
- ExceptionDisposition = UnhandledExceptionFilter(ExceptionInfo);
- }
-
- return ExceptionDisposition;
-}
-
VOID
WINAPI
BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress)
@@ -489,7 +462,7 @@ BaseProcessStartup(PPROCESS_START_ROUTINE
lpStartAddress)
/* Call the Start Routine */
ExitThread(lpStartAddress());
}
- _SEH2_EXCEPT(BaseExceptionFilter(_SEH2_GetExceptionInformation()))
+
_SEH2_EXCEPT(UnhandledExceptionFilter(_SEH2_GetExceptionInformation()))
{
/* Get the Exit code from the SEH Handler */
if (!BaseRunningInServerProcess)