Author: ion
Date: Wed Aug 30 21:01:58 2006
New Revision: 23803
URL: 
http://svn.reactos.org/svn/reactos?rev=23803&view=rev
Log:
- Fix KeRaiseUserException (can't use "return" from SEH_HANDLE).
Modified:
    trunk/reactos/ntoskrnl/ke/i386/exp.c
Modified: trunk/reactos/ntoskrnl/ke/i386/exp.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/exp.c?rev…
==============================================================================
--- trunk/reactos/ntoskrnl/ke/i386/exp.c (original)
+++ trunk/reactos/ntoskrnl/ke/i386/exp.c Wed Aug 30 21:01:58 2006
@@ -812,27 +812,32 @@
 NTAPI
 KeRaiseUserException(IN NTSTATUS ExceptionCode)
 {
+    NTSTATUS Status = STATUS_SUCCESS;
     ULONG OldEip;
-    PKTHREAD Thread = KeGetCurrentThread();
+    PTEB Teb = KeGetCurrentThread()->Teb;
+    PKTRAP_FRAME TrapFrame = KeGetCurrentThread()->TrapFrame;
     /* Make sure we can access the TEB */
     _SEH_TRY
     {
-        Thread->Teb->ExceptionCode = ExceptionCode;
+        /* Set the exception code */
+        Teb->ExceptionCode = ExceptionCode;
     }
     _SEH_HANDLE
     {
-        return(ExceptionCode);
+        /* Save exception code */
+        Status = ExceptionCode;
     }
     _SEH_END;
+    if (!NT_SUCCESS(Status)) return Status;
     /* Get the old EIP */
-    OldEip = Thread->TrapFrame->Eip;
+    OldEip = TrapFrame->Eip;
     /* Change it to the user-mode dispatcher */
-    Thread->TrapFrame->Eip = (ULONG_PTR)KeRaiseUserExceptionDispatcher;
+    TrapFrame->Eip = (ULONG_PTR)KeRaiseUserExceptionDispatcher;
     /* Return the old EIP */
-    return((NTSTATUS)OldEip);
-}
-
+    return (NTSTATUS)OldEip;
+}
+