Skip to content

Commit 93dbad7

Browse files
authored
Merge pull request #222 from simar0at/workaround-txmlconfig-leak
Patch the TXMLConfig memory leak
2 parents af09595 + 615fb7e commit 93dbad7

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

bgrasvgimagelist.pas

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,35 @@ procedure Register;
9595

9696
implementation
9797

98-
uses LCLType;
98+
uses LCLType, XMLRead;
9999

100100
procedure Register;
101101
begin
102102
RegisterComponents('BGRA Themes', [TBGRASVGImageList]);
103103
end;
104104

105+
{$IF FPC_FULLVERSION < 30203}
106+
type
107+
108+
{ TPatchedXMLConfig }
109+
110+
TPatchedXMLConfig = class(TXMLConfig)
111+
public
112+
procedure LoadFromStream(S : TStream); reintroduce;
113+
end;
114+
115+
116+
{ TPatchedXMLConfig }
117+
118+
procedure TPatchedXMLConfig.LoadFromStream(S: TStream);
119+
begin
120+
FreeAndNil(Doc);
121+
ReadXMLFile(Doc,S);
122+
FModified := False;
123+
if (Doc.DocumentElement.NodeName<>RootName) then
124+
raise EXMLConfigError.CreateFmt(SWrongRootName,[RootName,Doc.DocumentElement.NodeName]);
125+
end;
126+
{$ENDIF}
105127
{ TBGRASVGImageList }
106128

107129
procedure TBGRASVGImageList.ReadData(Stream: TStream);
@@ -140,7 +162,7 @@ procedure TBGRASVGImageList.ReadData(Stream: TStream);
140162
FDataLineBreak:= GetLineEnding(Stream);
141163
// Actually load the XML file
142164
Stream.Position := 0;
143-
FXMLConf.LoadFromStream(Stream);
165+
{$IF FPC_FULLVERSION < 30203}TPatchedXMLConfig(FXMLConf){$ELSE}FXMLConf{$ENDIF}.LoadFromStream(Stream);
144166
Load(FXMLConf);
145167
finally
146168
FXMLConf.Free;

0 commit comments

Comments
 (0)