X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Flib%2Frtl%2Fi386%2Fexcept.c;h=20a77040fc50550f882c59a2d5371b0bde4b69c6;hp=ab465ebbbd90e178a36bff0dc2a09e18abb1e2db;hb=259f15f48a975a723b7cd3e26021266c8edddc3c;hpb=2e0a23b3738c3e132abf5cd4c603f4847e0aeace diff --git a/reactos/lib/rtl/i386/except.c b/reactos/lib/rtl/i386/except.c index ab465ebbbd9..20a77040fc5 100644 --- a/reactos/lib/rtl/i386/except.c +++ b/reactos/lib/rtl/i386/except.c @@ -74,10 +74,13 @@ RtlDispatchException(IN PEXCEPTION_RECORD ExceptionRecord, ULONG_PTR StackLow, StackHigh; ULONG_PTR RegistrationFrameEnd; - /* Perform vectored exception handling (a dummy in kernel mode) */ + /* Perform vectored exception handling for user mode */ if (RtlCallVectoredExceptionHandlers(ExceptionRecord, Context)) { - /* Exception handled, continue execution */ + /* Exception handled, now call vectored continue handlers */ + RtlCallVectoredContinueHandlers(ExceptionRecord, Context); + + /* Continue execution */ return TRUE; } @@ -139,7 +142,7 @@ RtlDispatchException(IN PEXCEPTION_RECORD ExceptionRecord, /* Handle the dispositions */ switch (Disposition) { - /* Continue searching */ + /* Continue execution */ case ExceptionContinueExecution: /* Check if it was non-continuable */ @@ -157,7 +160,11 @@ RtlDispatchException(IN PEXCEPTION_RECORD ExceptionRecord, } else { - /* Return to caller */ + /* In user mode, call any registered vectored continue handlers */ + RtlCallVectoredContinueHandlers(ExceptionRecord, + Context); + + /* Execution continues */ return TRUE; }