From ce15a2a15bde3aa0347d623a7d42870130cf81c9 Mon Sep 17 00:00:00 2001 From: wp Date: Mon, 14 Dec 2015 21:22:13 +0000 Subject: [PATCH] fpvectorial: Fix memory leak of svg tokenizer. Add ReadDefsFromNode to TvSVGVectorialReader.ReadEntityFromNode. Prepare reading of line styles for svg. git-svn-id: trunk@50808 - --- components/fpvectorial/svgvectorialreader.pas | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/components/fpvectorial/svgvectorialreader.pas b/components/fpvectorial/svgvectorialreader.pas index b295cbbb32..e3b7cec50e 100644 --- a/components/fpvectorial/svgvectorialreader.pas +++ b/components/fpvectorial/svgvectorialreader.pas @@ -205,7 +205,11 @@ begin end; destructor TSVGPathTokenizer.Destroy; +var + i: Integer; begin + for i:=Tokens.Count-1 downto 0 do + Tokens[i].Free; Tokens.Free; inherited Destroy; @@ -905,6 +909,7 @@ function TvSVGVectorialReader.ReadSVGPenStyleWithKeyAndValue(AKey, AValue: string; ADestEntity: TvEntityWithPen): TvSetPenBrushAndFontElements; var OldAlpha: Word; + arr: TDoubleArray; begin Result := []; if AKey = 'stroke' then @@ -937,6 +942,10 @@ begin 'round': 'square': ADestEntity.Pen; end;} + end + else if AKey = 'stroke-dasharray' then + begin + arr := ReadSpaceSeparatedFloats(AValue, ','); end; end; @@ -1458,6 +1467,7 @@ begin lEntityName := LowerCase(ANode.NodeName); case lEntityName of 'circle': Result := ReadCircleFromNode(ANode, AData, ADoc); + 'defs': ReadDefsFromNode(ANode, AData, ADoc); 'ellipse': Result := ReadEllipseFromNode(ANode, AData, ADoc); 'frame': Result := ReadFrameFromNode(ANode, AData, ADoc); 'g': ReadLayerFromNode(ANode, AData, ADoc);