Test suite : fix memory leaks.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@912 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2009-07-16 17:38:48 +00:00
parent 173d32bb05
commit b57ed66842
2 changed files with 21 additions and 7 deletions

View File

@ -460,6 +460,7 @@ type
TDBGPinterProc = procedure(const AMsg:string);
procedure ClearObj(const AOwner: PDataBuffer);
procedure FreeObjectBuffer(var ABuffer : PDataBuffer); overload;
function LoadObjectFromStream(const AStoreRdr : IDataStoreReader):PDataBuffer;
procedure SaveObjectToStream(const ARoot: PDataBuffer; const ADest : IDataStore);
function CreateArrayBuffer(
@ -797,13 +798,13 @@ Begin
End;
End;
procedure ClearObjectBuffer(var ABuffer : PObjectBuffer);
procedure FreeObjectBuffer(var ABuffer : PObjectBuffer);overload;
var
p,q : PObjectBufferItem;
begin
if Assigned(ABuffer) then begin
if Assigned(ABuffer^.Attributes) then
ClearObjectBuffer(ABuffer^.Attributes);
FreeObjectBuffer(ABuffer^.Attributes);
p := ABuffer^.Head;
while Assigned(p) do begin
q := p;
@ -815,6 +816,7 @@ begin
end;
if Assigned(ABuffer^.InnerData) then begin
ClearObj(ABuffer^.InnerData);
Freemem(ABuffer^.InnerData);
ABuffer^.InnerData := nil;
end;
//ABuffer^.Head := nil;
@ -824,6 +826,18 @@ begin
end;
end;
procedure FreeObjectBuffer(var ABuffer : PDataBuffer);
var
tmpBuffer : PDataBuffer;
begin
if ( ABuffer <> nil ) then begin
tmpBuffer := ABuffer;
ABuffer := nil;
ClearObj(tmpBuffer);
FreeMem(tmpBuffer)
end;
end;
procedure ClearObj(const AOwner: PDataBuffer);
Var
i , j: Integer;
@ -853,7 +867,7 @@ Begin
{$ENDIF WST_UNICODESTRING}
dtObject :
Begin
ClearObjectBuffer(AOwner^.ObjectData);
FreeObjectBuffer(AOwner^.ObjectData);
End;
dtArray :
Begin
@ -866,7 +880,7 @@ Begin
i := AOwner^.ArrayData^.Count * SizeOf(PDataBuffer);
Freemem(AOwner^.ArrayData^.Items,i);
AOwner^.ArrayData^.Items := Nil;
ClearObjectBuffer(AOwner^.ArrayData^.Attributes);
FreeObjectBuffer(AOwner^.ArrayData^.Attributes);
i := SizeOf(TArrayBuffer);
Freemem(AOwner^.ArrayData,i);
AOwner^.ArrayData := Nil;

View File

@ -265,11 +265,11 @@ procedure AddSystemSymbol(
typlst[i] := splTyp;
s := SPECIAL_SIMPLE_TYPES[i][1];
if not IsStrEmpty(s) then begin
syb := AContainer.FindElementInModule(SPECIAL_SIMPLE_TYPES[i][1],ADest) as TPasNativeSpecialSimpleContentClassType;
syb := AContainer.FindElementInModule(s,ADest) as TPasNativeSpecialSimpleContentClassType;
if not Assigned(syb) then begin
syb := TPasNativeSpecialSimpleContentClassType(AContainer.CreateElement(TPasNativeSpecialSimpleContentClassType,s,ADest.InterfaceSection,visDefault,'',0));
ADest.InterfaceSection.Declarations.Add(syb);
ADest.InterfaceSection.Types.Add(splTyp);
ADest.InterfaceSection.Types.Add(syb);
end;
splTyp.SetExtendableType(syb);
end;
@ -304,7 +304,7 @@ procedure AddSystemSymbol(
if not Assigned(syb) then begin
syb := TPasNativeSimpleContentClassType(AContainer.CreateElement(TPasNativeSimpleContentClassType,s,ADest.InterfaceSection,visDefault,'',0));
ADest.InterfaceSection.Declarations.Add(syb);
ADest.InterfaceSection.Types.Add(splTyp);
ADest.InterfaceSection.Types.Add(syb);
end;
splTyp.SetExtendableType(syb);
end;