You've already forked lazarus-ccr
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:
@ -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;
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user