Hi.
This construction of setup vr.VAnsiString cause memoryleak:
program str;
uses
heaptrc;
var
s: ansistring;
vr: TVarRec;
begin
SetString(s, 'xxx', 3); //ok
vr.VType := vtAnsiString;
SetString(AnsiString(vr.VAnsiString), 'yyy', 3); //Memory leak.
end.Heap dump by heaptrc unit
2 memory blocks allocated : 24/32
1 memory blocks freed : 12/16
1 unfreed memory blocks : 12
True heap size : 32768
True free heap : 32672
Should be : 32688
Call trace for block $B7FEE0C0 size 12
$08050E82 $fpc_ansistr_setlength, line 569 of /home/common/fpc/rtl/inc/astrings.inc $080480DF main, line 10 of str.pas
$080678B1 _FPC_proc_start, line 67 of ./i386/si_prc.inc
Is right that in destroying TVarRec is not decremented ansistring reference? If so, how to correctly set TVarRec.VAnsiString without memoryleak? I need to fill "a: array of TVarRec" with ansistrings.
Thanks.
Petr
