When porting a Kylix/Delphi project to FPC (version 1.9.0 Linux) I've encountered this small problem using class methods: When I pass an object instance as parameter in class methods I have a sigsev like in this example
program TestFail;
uses
SysUtils;
Type
TMyObject = Class
private
FNome: string;
published
Property Nome: string read FNome write FNome;
end;
TMyTestObject = class(TObject)
public
class function OutputParticularClass(AObj: TObject):string;
end;
var
obj: TMyObject;
class function TMyTestObject.OutputParticularClass(AObj: TObject): string;
begin
Result := AObj.ClassName;
Writeln(Result);
end;
begin
obj := TMyObject.Create;
TMyTestObject.OutputParticularClass(obj);
obj.Free;
end.The above program compiles with no warnings in FPC, but at runtime it sigsevs. I've run this in Kylix/Delphi and works as expected.
On the other hand I've seen that class methods work ok if the parameter passed are integers for example
class function TMyTestObject.OutputNumber(aNumber: integer):string;
begin
Result := 'Number is ' + intToStr(aNumber);
Writeln(Result);
end;
begin
TMyTestObject.OutputNumber(12345);
end.
works ok in FPCAm I doing something wrong or is a bug I've found? Any ideas?
Ciao, Dean
