Merged revisions 1427 via svnmerge from

svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/trunk

r1427 (yury)
* prevent endless stack dump if an exception occured during the dump itself.

git-svn-id: branches/fixes_2_0@1431 -
This commit is contained in:
peter 2005-10-16 19:51:09 +00:00
parent 3c0f6f85fe
commit 9352dc266d

View File

@ -741,23 +741,27 @@ var
caller_frame,
caller_addr : Pointer;
Begin
prevbp:=bp-1;
i:=0;
is_dev:=do_isdevice(textrec(f).Handle);
while bp > prevbp Do
Begin
caller_addr := get_caller_addr(bp);
caller_frame := get_caller_frame(bp);
if (caller_addr=nil) or
(caller_frame=nil) then
break;
Writeln(f,BackTraceStrFunc(caller_addr));
Inc(i);
If ((i>max_frame_dump) and is_dev) or (i>256) Then
break;
prevbp:=bp;
bp:=caller_frame;
End;
try
prevbp:=bp-1;
i:=0;
is_dev:=do_isdevice(textrec(f).Handle);
while bp > prevbp Do
Begin
caller_addr := get_caller_addr(bp);
caller_frame := get_caller_frame(bp);
if (caller_addr=nil) or
(caller_frame=nil) then
break;
Writeln(f,BackTraceStrFunc(caller_addr));
Inc(i);
If ((i>max_frame_dump) and is_dev) or (i>256) Then
break;
prevbp:=bp;
bp:=caller_frame;
End;
except
{ prevent endless dump if an exception occured }
end;
End;