Pārlūkot izejas kodu

* Do not attempt to retrieve caller context if initial frame is not between StackTop and frame pointer of current procedure (aka stack bottom). Reverts part of r21843, fixing regression of tests/test/cg/traise6.pp after r26843.
r26843 caused regression because it removed exception handlers, causing condition "if ExceptAddrStack<>nil" in HandleErrorAddrFrame() to become False, so it wasn't raising another exception (which would halt with code 217) but terminating directly with code 216.

git-svn-id: trunk@26850 -

sergei 11 gadi atpakaļ
vecāks
revīzija
04f32c2a01
1 mainītis faili ar 2 papildinājumiem un 1 dzēšanām
  1. 2 1
      rtl/inc/except.inc

+ 2 - 1
rtl/inc/except.inc

@@ -136,7 +136,8 @@ begin
   frames:=nil;
   framebufsize:=0;
   framecount:=0;
-  prev_frame:=get_caller_frame(curr_frame, curr_addr);
+  { The frame pointer of this procedure is used as initial stack bottom value. }
+  prev_frame:=get_frame;
   while (framecount<RaiseMaxFrameCount) and (curr_frame > prev_frame) and
         (curr_frame<(StackBottom + StackLength)) do
     Begin