* pass not only exception address but also frame to raise:

if an address is passed the compiler cannot know a good 
  value for the frame so it passed nil and no stack trace is printed, resolves #12528

git-svn-id: trunk@22932 -
This commit is contained in:
florian 2012-11-04 20:40:21 +00:00
parent 1bc47815be
commit 39aef35bdc
7 changed files with 15 additions and 17 deletions

View File

@ -1403,7 +1403,7 @@ end;
class procedure TFPHashList.Error(const Msg: string; Data: PtrInt);
begin
Raise EListError.CreateFmt(Msg,[Data]) at get_caller_addr(get_frame);
Raise EListError.CreateFmt(Msg,[Data]) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
function TFPHashList.Expand: TFPHashList;

View File

@ -1342,13 +1342,13 @@ end;
procedure EvaluationError(const Msg: String);
begin
raise EXPathEvaluationError.Create(Msg) at get_caller_addr(get_frame);
raise EXPathEvaluationError.Create(Msg) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
procedure EvaluationError(const Msg: String; const Args: array of const);
begin
raise EXPathEvaluationError.CreateFmt(Msg, Args)
at get_caller_addr(get_frame);
at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
@ -1370,7 +1370,7 @@ end;
procedure TXPathVariable.Error(const Msg: String; const Args: array of const);
begin
raise Exception.CreateFmt(Msg, Args) at get_caller_addr(get_frame);
raise Exception.CreateFmt(Msg, Args) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
@ -1788,7 +1788,7 @@ end;
procedure TXPathScanner.Error(const Msg: String);
begin
raise Exception.Create(Msg) at get_caller_addr(get_frame);
raise Exception.Create(Msg) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
procedure TXPathScanner.ParsePredicates(var Dest: TXPathNodeArray);

View File

@ -15,15 +15,13 @@
{****************************************************************************}
Procedure BitsError (const Msg : string);
begin
Raise EBitsError.Create(Msg) at get_caller_addr(get_frame);
Raise EBitsError.Create(Msg) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
Procedure BitsErrorFmt (const Msg : string; const Args : array of const);
begin
Raise EBitsError.CreateFmt(Msg,args) at get_caller_addr(get_frame);
Raise EBitsError.CreateFmt(Msg,args) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
{Min function for Longint}

View File

@ -154,7 +154,7 @@ end;
class procedure TFPList.Error(const Msg: string; Data: PtrInt);
begin
Raise EListError.CreateFmt(Msg,[Data]) at get_caller_addr(get_frame);
Raise EListError.CreateFmt(Msg,[Data]) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
procedure TFPList.Exchange(Index1, Index2: Integer);
@ -743,7 +743,7 @@ end;
class procedure TList.Error(const Msg: string; Data: PtrInt);
begin
Raise EListError.CreateFmt(Msg,[Data]) at get_caller_addr(get_frame);
Raise EListError.CreateFmt(Msg,[Data]) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
procedure TList.Exchange(Index1, Index2: Integer);

View File

@ -16,12 +16,12 @@
procedure TStream.ReadNotImplemented;
begin
raise EStreamError.CreateFmt(SStreamNoReading, [ClassName]) at get_caller_addr(get_frame);
raise EStreamError.CreateFmt(SStreamNoReading, [ClassName]) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
procedure TStream.WriteNotImplemented;
begin
raise EStreamError.CreateFmt(SStreamNoWriting, [ClassName]) at get_caller_addr(get_frame);
raise EStreamError.CreateFmt(SStreamNoWriting, [ClassName]) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
function TStream.Read(var Buffer; Count: Longint): Longint;
@ -154,7 +154,7 @@ end;
procedure TStream.InvalidSeek;
begin
raise EStreamError.CreateFmt(SStreamInvalidSeek, [ClassName]) at get_caller_addr(get_frame);
raise EStreamError.CreateFmt(SStreamInvalidSeek, [ClassName]) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
procedure TStream.FakeSeekForward(Offset: Int64; const Origin: TSeekOrigin; const Pos: Int64);

View File

@ -434,13 +434,13 @@ end;
Procedure TStrings.Error(const Msg: string; Data: Integer);
begin
Raise EStringListError.CreateFmt(Msg,[Data]) at get_caller_addr(get_frame);
Raise EStringListError.CreateFmt(Msg,[Data]) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
Procedure TStrings.Error(const Msg: pstring; Data: Integer);
begin
Raise EStringListError.CreateFmt(Msg^,[Data]) at get_caller_addr(get_frame);
Raise EStringListError.CreateFmt(Msg^,[Data]) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;

View File

@ -526,7 +526,7 @@ end;
class procedure TFPSList.Error(const Msg: string; Data: PtrInt);
begin
raise EListError.CreateFmt(Msg,[Data]) at get_caller_addr(get_frame);
raise EListError.CreateFmt(Msg,[Data]) at get_caller_addr(get_frame), get_caller_frame(get_frame);
end;
procedure TFPSList.Exchange(Index1, Index2: Integer);