diff options
author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-06-22 09:25:32 +0000 |
---|---|---|
committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-06-22 09:25:32 +0000 |
commit | f77ed75095117782aeddd7c7085012cec7849d72 (patch) | |
tree | c449cf468fe7d1d2c6c9d5739378c1820cd470e7 /packages/chm | |
parent | 2f6a8ee39c39bb4aca8ee079656a5476ba01d70a (diff) | |
download | fpc-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
Diffstat (limited to 'packages/chm')
-rw-r--r-- | packages/chm/src/chmreader.pas | 12 |
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; |