summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-06-22 09:25:32 +0000
committermarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-06-22 09:25:32 +0000
commitf77ed75095117782aeddd7c7085012cec7849d72 (patch)
treec449cf468fe7d1d2c6c9d5739378c1820cd470e7
parent2f6a8ee39c39bb4aca8ee079656a5476ba01d70a (diff)
downloadfpc-f77ed75095117782aeddd7c7085012cec7849d72.tar.gz
* fixed two memleaks in chmreader. Patch based on the one in Mantis #19599 by Anton
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@17791 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--packages/chm/src/chmreader.pas12
1 files changed, 10 insertions, 2 deletions
diff --git a/packages/chm/src/chmreader.pas b/packages/chm/src/chmreader.pas
index c744b1d79b..212cff3347 100644
--- a/packages/chm/src/chmreader.pas
+++ b/packages/chm/src/chmreader.pas
@@ -1205,7 +1205,8 @@ begin
begin
sitemap.free;
Result:=AbortAndTryTextual;
- end;
+ end
+ else Index.Free;
end;
function TChmReader.GetTOCSitemap(ForceXML:boolean=false): TChmSiteMap;
@@ -1281,7 +1282,7 @@ begin
Exit;
end;
- // Binary Toc Exists
+ // Binary Toc Exists
Result := TChmSiteMap.Create(stTOC);
EntryInfoOffset := NtoLE(TOC.ReadDWord);
@@ -1289,10 +1290,17 @@ begin
EntryCount := NtoLE(TOC.ReadDWord);
TOPICSOffset := NtoLE(TOC.ReadDWord);
+ if EntryCount <> 0 then
+ begin
+ Toc.Free;
+ Exit;
+ end;
+
NextItem := EntryInfoOffset;
repeat
NextItem := AddTOCItem(Toc, NextItem, Result.Items);
until NextItem = 0;
+ TOC.Free;
end;
function TChmReader.HasContextList: Boolean;