* stop backtrace also when caller frame is nil

This commit is contained in:
peter 2004-05-27 23:34:23 +00:00
parent 80d44f0691
commit 9e8618afe6

View File

@ -768,6 +768,7 @@ var
i : Longint; i : Longint;
prevbp : Pointer; prevbp : Pointer;
is_dev : boolean; is_dev : boolean;
caller_frame,
caller_addr : Pointer; caller_addr : Pointer;
Begin Begin
prevbp:=bp-1; prevbp:=bp-1;
@ -776,13 +777,16 @@ Begin
while bp > prevbp Do while bp > prevbp Do
Begin Begin
caller_addr := get_caller_addr(bp); caller_addr := get_caller_addr(bp);
if caller_addr <> nil then caller_frame := get_caller_frame(bp);
Writeln(f,BackTraceStrFunc(caller_addr)); if (caller_addr=nil) or
(caller_frame=nil) then
break;
Writeln(f,BackTraceStrFunc(caller_addr));
Inc(i); Inc(i);
If ((i>max_frame_dump) and is_dev) or (i>256) Then If ((i>max_frame_dump) and is_dev) or (i>256) Then
exit; break;
prevbp:=bp; prevbp:=bp;
bp:=get_caller_frame(bp); bp:=caller_frame;
End; End;
End; End;
@ -882,7 +886,10 @@ end;
{ {
$Log$ $Log$
Revision 1.58 2004-05-16 18:51:20 peter Revision 1.59 2004-05-27 23:34:23 peter
* stop backtrace also when caller frame is nil
Revision 1.58 2004/05/16 18:51:20 peter
* use thandle in do_* * use thandle in do_*
Revision 1.57 2004/05/01 15:26:33 jonas Revision 1.57 2004/05/01 15:26:33 jonas