Fix previous strangely incomplete NtRaiseException implementation and re-enable the ProbeForRead call that failed
Modified: trunk/reactos/ntoskrnl/ke/exception.c
Modified: trunk/reactos/ntoskrnl/ke/i386/exp.c
Modified: trunk/reactos/ntoskrnl/ke/i386/syscall.S

Modified: trunk/reactos/ntoskrnl/ke/exception.c
--- trunk/reactos/ntoskrnl/ke/exception.c	2005-09-12 03:10:08 UTC (rev 17815)
+++ trunk/reactos/ntoskrnl/ke/exception.c	2005-09-12 03:59:03 UTC (rev 17816)
@@ -23,7 +23,7 @@
     CONTEXT LocalContext;
 
     /* We'll have to make a copy and probe it */
-    //ProbeForRead(Context, sizeof(CONTEXT), sizeof(ULONG));
+    ProbeForRead(Context, sizeof(CONTEXT), sizeof(ULONG));
     RtlMoveMemory(&LocalContext, Context, sizeof(CONTEXT));
     Context = &LocalContext;
 

Modified: trunk/reactos/ntoskrnl/ke/i386/exp.c
--- trunk/reactos/ntoskrnl/ke/i386/exp.c	2005-09-12 03:10:08 UTC (rev 17815)
+++ trunk/reactos/ntoskrnl/ke/i386/exp.c	2005-09-12 03:59:03 UTC (rev 17816)
@@ -1017,6 +1017,7 @@
                 /* Align context size and get stack pointer */
                 Size = (sizeof(CONTEXT) + 3) & ~3;
                 Stack = (Context.Esp & ~3) - Size;
+                DPRINT1("Stack: %lx\n", Stack);
 
                 /* Probe stack and copy Context */
                 ProbeForWrite((PVOID)Stack, Size, sizeof(ULONG));
@@ -1027,6 +1028,7 @@
                         (EXCEPTION_MAXIMUM_PARAMETERS - ExceptionRecord->NumberParameters) *
                         sizeof(ULONG) + 3) & ~3;
                 NewStack = Stack - Size;
+                DPRINT1("NewStack: %lx\n", NewStack);
 
                 /* Probe stack and copy exception record. Don't forget to add the two params */
                 ProbeForWrite((PVOID)(NewStack - 2 * sizeof(ULONG_PTR)),

Modified: trunk/reactos/ntoskrnl/ke/i386/syscall.S
--- trunk/reactos/ntoskrnl/ke/i386/syscall.S	2005-09-12 03:10:08 UTC (rev 17815)
+++ trunk/reactos/ntoskrnl/ke/i386/syscall.S	2005-09-12 03:59:03 UTC (rev 17816)
@@ -498,6 +498,13 @@
     pop ebp
     mov esp, ebp
 
+    /* Check the result */
+    or eax, eax
+    jz _KiServiceExit2
+
+    /* Restore debug registers too */
+    jmp _KiServiceExit
+
 .globl _NtContinue@8
 _NtContinue@8: