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