Avoid memory leak on trecorddef.variantrecorddesc field

git-svn-id: trunk@34363 -
This commit is contained in:
pierre 2016-08-21 22:25:13 +00:00
parent eefdf135a5
commit dfeb6e3ae1

View File

@ -4450,7 +4450,27 @@ implementation
destructor trecorddef.destroy;
procedure free_variantrecdesc(var variantrecdesc : pvariantrecdesc);
var
i : longint;
begin
while assigned(variantrecdesc) do
begin
for i:=0 to high(variantrecdesc^.branches) do
begin
free_variantrecdesc(variantrecdesc^.branches[i].nestedvariant);
SetLength(variantrecdesc^.branches[i].values,0);
end;
SetLength(variantrecdesc^.branches,0);
dispose(variantrecdesc);
variantrecdesc:=nil;
end;
end;
begin
if assigned(variantrecdesc) then
free_variantrecdesc(variantrecdesc);
if assigned(symtable) then
begin
symtable.free;