mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-25 15:19:14 +02:00
fpvectorial: Fix svg reader memory leaks related to BrushDefs and tokenizer. Declare package as runtime package.
git-svn-id: trunk@51060 -
This commit is contained in:
parent
42e68fd86d
commit
c689e1582c
@ -8,9 +8,6 @@
|
|||||||
<SearchPaths>
|
<SearchPaths>
|
||||||
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
|
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
|
||||||
</SearchPaths>
|
</SearchPaths>
|
||||||
<Other>
|
|
||||||
<CompilerPath Value="$(CompPath)"/>
|
|
||||||
</Other>
|
|
||||||
</CompilerOptions>
|
</CompilerOptions>
|
||||||
<Files Count="21">
|
<Files Count="21">
|
||||||
<Item1>
|
<Item1>
|
||||||
@ -98,7 +95,6 @@
|
|||||||
<UnitName Value="htmlvectorialreader"/>
|
<UnitName Value="htmlvectorialreader"/>
|
||||||
</Item21>
|
</Item21>
|
||||||
</Files>
|
</Files>
|
||||||
<Type Value="RunAndDesignTime"/>
|
|
||||||
<RequiredPkgs Count="2">
|
<RequiredPkgs Count="2">
|
||||||
<Item1>
|
<Item1>
|
||||||
<PackageName Value="LCL"/>
|
<PackageName Value="LCL"/>
|
||||||
@ -114,5 +110,8 @@
|
|||||||
<PublishOptions>
|
<PublishOptions>
|
||||||
<Version Value="2"/>
|
<Version Value="2"/>
|
||||||
</PublishOptions>
|
</PublishOptions>
|
||||||
|
<CustomOptions Items="ExternHelp" Version="2">
|
||||||
|
<_ExternHelp Items="Count"/>
|
||||||
|
</CustomOptions>
|
||||||
</Package>
|
</Package>
|
||||||
</CONFIG>
|
</CONFIG>
|
||||||
|
@ -13,14 +13,8 @@ uses
|
|||||||
lazvectorialreader, mathmlvectorialreader, odgvectorialreader,
|
lazvectorialreader, mathmlvectorialreader, odgvectorialreader,
|
||||||
rawvectorialreadwrite, svgvectorialreader, svgvectorialwriter,
|
rawvectorialreadwrite, svgvectorialreader, svgvectorialwriter,
|
||||||
svgzvectorialreader, odtvectorialwriter, docxvectorialwriter,
|
svgzvectorialreader, odtvectorialwriter, docxvectorialwriter,
|
||||||
htmlvectorialreader, LazarusPackageIntf;
|
htmlvectorialreader;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
procedure Register;
|
|
||||||
begin
|
|
||||||
end;
|
|
||||||
|
|
||||||
initialization
|
|
||||||
RegisterPackage('fpvectorialpkg', @Register);
|
|
||||||
end.
|
end.
|
||||||
|
@ -67,13 +67,15 @@ type
|
|||||||
{ TSVGPathTokenizer }
|
{ TSVGPathTokenizer }
|
||||||
|
|
||||||
TSVGPathTokenizer = class
|
TSVGPathTokenizer = class
|
||||||
|
protected
|
||||||
|
Tokens: TSVGTokenList;
|
||||||
public
|
public
|
||||||
FPointSeparator, FCommaSeparator: TFormatSettings;
|
FPointSeparator, FCommaSeparator: TFormatSettings;
|
||||||
Tokens: TSVGTokenList;
|
|
||||||
ExtraDebugStr: string;
|
ExtraDebugStr: string;
|
||||||
constructor Create;
|
constructor Create;
|
||||||
Destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure AddToken(AStr: string);
|
procedure AddToken(AStr: string);
|
||||||
|
procedure ClearTokens;
|
||||||
procedure TokenizePathString(AStr: string);
|
procedure TokenizePathString(AStr: string);
|
||||||
procedure TokenizeFunctions(AStr: string);
|
procedure TokenizeFunctions(AStr: string);
|
||||||
function DebugOutTokensAsString: string;
|
function DebugOutTokensAsString: string;
|
||||||
@ -208,13 +210,9 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TSVGPathTokenizer.Destroy;
|
destructor TSVGPathTokenizer.Destroy;
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
begin
|
begin
|
||||||
for i:=Tokens.Count-1 downto 0 do
|
ClearTokens;
|
||||||
Tokens[i].Free;
|
|
||||||
Tokens.Free;
|
Tokens.Free;
|
||||||
|
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -278,6 +276,15 @@ begin
|
|||||||
Tokens.Add(lToken);
|
Tokens.Add(lToken);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TSVGPathTokenizer.ClearTokens;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
for i := Tokens.Count-1 downto 0 do
|
||||||
|
Tokens[i].Free;
|
||||||
|
Tokens.Clear;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TSVGPathTokenizer.TokenizePathString(AStr: string);
|
procedure TSVGPathTokenizer.TokenizePathString(AStr: string);
|
||||||
const
|
const
|
||||||
Str_Space: Char = ' ';
|
Str_Space: Char = ' ';
|
||||||
@ -1954,7 +1961,7 @@ var
|
|||||||
lDebugStr: String;
|
lDebugStr: String;
|
||||||
lTmpTokenType: TSVGTokenType;
|
lTmpTokenType: TSVGTokenType;
|
||||||
begin
|
begin
|
||||||
FSVGPathTokenizer.Tokens.Clear;
|
FSVGPathTokenizer.ClearTokens;
|
||||||
FSVGPathTokenizer.TokenizePathString(AStr);
|
FSVGPathTokenizer.TokenizePathString(AStr);
|
||||||
//lDebugStr := FSVGPathTokenizer.DebugOutTokensAsString();
|
//lDebugStr := FSVGPathTokenizer.DebugOutTokensAsString();
|
||||||
CurX := 0;
|
CurX := 0;
|
||||||
@ -2325,7 +2332,7 @@ var
|
|||||||
X, Y: Double;
|
X, Y: Double;
|
||||||
FirstPtX, FirstPtY, CurX, CurY: Double;
|
FirstPtX, FirstPtY, CurX, CurY: Double;
|
||||||
begin
|
begin
|
||||||
FSVGPathTokenizer.Tokens.Clear;
|
FSVGPathTokenizer.ClearTokens;
|
||||||
FSVGPathTokenizer.TokenizePathString(AStr);
|
FSVGPathTokenizer.TokenizePathString(AStr);
|
||||||
CurX := 0;
|
CurX := 0;
|
||||||
CurY := 0;
|
CurY := 0;
|
||||||
@ -3059,9 +3066,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TvSVGVectorialReader.Destroy;
|
destructor TvSVGVectorialReader.Destroy;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
FLayerStylesKeys.Free;
|
FLayerStylesKeys.Free;
|
||||||
FLayerStylesValues.Free;
|
FLayerStylesValues.Free;
|
||||||
|
|
||||||
|
for i:=FBrushDefs.Count-1 downto 0 do TObject(FBrushDefs[i]).Free;
|
||||||
FBrushDefs.Free;
|
FBrushDefs.Free;
|
||||||
FSVGPathTokenizer.Free;
|
FSVGPathTokenizer.Free;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user