diff --git a/packages/chm/src/chmfilewriter.pas b/packages/chm/src/chmfilewriter.pas index cde6f3bb71..7b6341ae21 100644 --- a/packages/chm/src/chmfilewriter.pas +++ b/packages/chm/src/chmfilewriter.pas @@ -1144,11 +1144,13 @@ begin begin if fileexists(FTableOfContentsFileName) then begin + FreeAndNil(FTocStream); FTocStream:=TMemoryStream.Create; try FTocStream.loadfromfile(FTableOfContentsFilename); - writeln(ftableofcontentsfilename, ' ' ,ftocstream.size); + //writeln(ftableofcontentsfilename, ' ' ,ftocstream.size); FTocStream.Position:=0; + FreeAndNil(FToc); FToc:=TChmSiteMap.Create(sttoc); FToc.loadfromstream(FTocStream); ftoc.savetofile('bla.something'); @@ -1167,10 +1169,12 @@ begin begin if fileexists(FIndexFileName) then begin + FreeAndNil(FIndexStream); FIndexStream:=TMemoryStream.Create; try FIndexStream.LoadFromFile(FIndexFileName); FIndexStream.Position:=0; + FreeAndNil(FIndex); FIndex:=TChmSiteMap.Create(stindex); FIndex.loadfromfile(FIndexFileName); except diff --git a/packages/chm/src/chmsitemap.pas b/packages/chm/src/chmsitemap.pas index 83e0ff2d9c..234a403d39 100644 --- a/packages/chm/src/chmsitemap.pas +++ b/packages/chm/src/chmsitemap.pas @@ -351,15 +351,22 @@ var begin if Assigned(FHTMLParser) then FHTMLParser.Free; TmpStream := TMemoryStream.Create; - TmpStream.LoadFromFile(AFileName); - SetLength(Buffer, TmpStream.Size); - TmpStream.Position := 0; - TmpStream.Read(Buffer[1], TmpStream.Size); + try + TmpStream.LoadFromFile(AFileName); + SetLength(Buffer, TmpStream.Size); + TmpStream.Position := 0; + TmpStream.Read(Buffer[1], TmpStream.Size); + finally + TmpStream.Free; + end; FHTMLParser := THTMLParser.Create(Buffer); - FHTMLParser.OnFoundTag := @FoundTag; - FHTMLParser.OnFoundText := @FoundText; - FHTMLParser.Exec; - FreeAndNil(FHTMLParser); + try + FHTMLParser.OnFoundTag := @FoundTag; + FHTMLParser.OnFoundText := @FoundText; + FHTMLParser.Exec; + finally + FreeAndNil(FHTMLParser); + end; end; procedure TChmSiteMap.LoadFromStream(AStream: TStream); diff --git a/packages/chm/src/chmwriter.pas b/packages/chm/src/chmwriter.pas index fa65505a54..ca8ef472cc 100644 --- a/packages/chm/src/chmwriter.pas +++ b/packages/chm/src/chmwriter.pas @@ -1533,7 +1533,7 @@ begin FURLSTRStream.Free; FURLTBLStream.Free; FFiftiMainStream.Free; - FIDXHdrStream.Create; + FIDXHdrStream.Free; SpareString.free; SpareUrlStr.free; FAvlUrlStr.FreeAndClear;