nielsAD / lape

Scripting engine with Pascal-like syntax for FPC and Delphi
112 stars 26 forks source link

Dest var can get wrong value when getDestVar is used #182

Closed ollydev closed 2 years ago

ollydev commented 2 years ago

Two examples here.

type TVec3 = packed record X,Y,Z: Byte; end; // Force CompareMem usage (Size <> 4,8,16,32) on record op_Equal

function Buggy: Boolean;
var
  Test: record A, B: TVec3; end;
begin
  Result := False or (Test.A <> Test.B);

  WriteLn('Bug: ', Result);              // True ??
  WriteLn(False or (Test.A <> Test.B));  // False - Correct
end;

begin
  Buggy();
end;

var x: array of Integer := [1,2,3,4];
begin
  x := [0] + x; // [0, 0] ??
  WriteLn(x);
end.