Explorar o código

* call HandleErrorAddrFrame on return of signal handler, reduces amount of code called within signal handler (for linux/i386)

git-svn-id: trunk@8092 -
micha %!s(int64=18) %!d(string=hai) anos
pai
achega
0e64718cb2
Modificáronse 1 ficheiros con 6 adicións e 1 borrados
  1. 6 1
      rtl/linux/i386/sighnd.inc

+ 6 - 1
rtl/linux/i386/sighnd.inc

@@ -79,6 +79,11 @@ begin
   reenable_signal(sig);
 { give runtime error at the position where the signal was raised }
   if res<>0 then
-    HandleErrorAddrFrame(res,pointer(UContext^.uc_mcontext.eip),pointer(UContext^.uc_mcontext.ebp));
+  begin
+    ucontext^.uc_mcontext.eax := res;
+    ucontext^.uc_mcontext.edx := ucontext^.uc_mcontext.eip;
+    ucontext^.uc_mcontext.ecx := ucontext^.uc_mcontext.ebp;
+    ucontext^.uc_mcontext.eip := ptruint(@HandleErrorAddrFrame);
+  end;
 end;