I found what appears to a subtle difference between the Delphi & Kylix3 handling of dynamic array assignment and FPC in Delphi mode. If an assignment is made along the lines:
type TArray : array of Integer; var A, B : TArray; I : Integer; type function F ( C : TArray ) : TArray; begin { does nothing } end begin SetLength(B,4); for I := 0 to 3 do B[I] := I; A := Copy(B); A := F(B); { what is the correct answer here? } end; a question arises as to the value of A. Should it be nil or should it be a copy of B? Delphi and Kylix assume that because the function F does not assign a value to Result (ie, does not assign a return value) that the Lvalue assigned from F remains unchanged. FPC assigns nil to A which IMHO is correct, but not when run in "bug for bug" Delphi compatibility mode. Obviously F not assigning Result is a programming error, but unfortunately it can be a common one in legacy code. What do others think about this compatibility difference? Should it be fixed or should (possibly large) legacy codebases be debugged? Cheers, Bruce. _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel