On Sun, 24 Feb 2013 23:20:23 +0100 Reimar Grabowski <reimg...@web.de> wrote:
> Hi, > > see the following little program: > > program argumentbug; > > {$MODE ObjFpc} > > uses classes; > > type > > TVector3 = packed record > X, Y, Z: Single; > end; > > TClassA = class > protected > fVector: TVector3; > public > procedure SetVector(AVector: TVector3); virtual; abstract; > end; > > { TClassB } > > TClassB = class(TClassA) > public > procedure SetVector(AVector: TVector3); override; > end; > > { TClassB } > > procedure TClassB.SetVector(AVector: TVector3); > begin > writeln('TClassB: ',AVector.X,',',AVector.Y,',',AVector.Z); > fVector:=AVector; > end; > > var > MyVector: TVector3; > MyClassB: TClassB; > begin > MyVector.X:=0; > MyVector.Y:=0; > MyVector.Z:=3; > MyClassB:=TClassB.Create; > MyClassB.SetVector(MyVector); > end. > > Obviously the expected output is 0,0,3 but in fact the output is 0,3,3. > I am sure that this used to work as my real code showing the problem is many > years old. > (The problem stays even if I don't declare the method in TClassA abstract.) > > OS: Ubuntu 12.10 64-Bit > Compiler: FPC 2.7.1 Rev. 23655 It works under 2.6.0 and 2.6.2 (Ubuntu 64bit). Mattias _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal