Browse Source

--- Merging r30987 into '.':
U packages/chm/src/chmsitemap.pas
U packages/chm/src/chmwriter.pas
U packages/chm/src/chmfilewriter.pas
--- Recording mergeinfo for merge of r30987 into '.':
U .

# revisions: 30987

git-svn-id: branches/fixes_3_0@31083 -

marco 10 years ago
parent
commit
bc4bae3150

+ 5 - 1
packages/chm/src/chmfilewriter.pas

@@ -1144,11 +1144,13 @@ begin
    begin
    begin
      if fileexists(FTableOfContentsFileName) then
      if fileexists(FTableOfContentsFileName) then
        begin
        begin
+         FreeAndNil(FTocStream);
          FTocStream:=TMemoryStream.Create;
          FTocStream:=TMemoryStream.Create;
          try
          try
            FTocStream.loadfromfile(FTableOfContentsFilename);
            FTocStream.loadfromfile(FTableOfContentsFilename);
-           writeln(ftableofcontentsfilename, ' ' ,ftocstream.size);
+           //writeln(ftableofcontentsfilename, ' ' ,ftocstream.size);
            FTocStream.Position:=0;
            FTocStream.Position:=0;
+           FreeAndNil(FToc);
            FToc:=TChmSiteMap.Create(sttoc);
            FToc:=TChmSiteMap.Create(sttoc);
            FToc.loadfromstream(FTocStream);
            FToc.loadfromstream(FTocStream);
            ftoc.savetofile('bla.something');
            ftoc.savetofile('bla.something');
@@ -1167,10 +1169,12 @@ begin
    begin
    begin
      if fileexists(FIndexFileName) then
      if fileexists(FIndexFileName) then
        begin
        begin
+        FreeAndNil(FIndexStream);
         FIndexStream:=TMemoryStream.Create;
         FIndexStream:=TMemoryStream.Create;
         try
         try
           FIndexStream.LoadFromFile(FIndexFileName);
           FIndexStream.LoadFromFile(FIndexFileName);
           FIndexStream.Position:=0;
           FIndexStream.Position:=0;
+          FreeAndNil(FIndex);
           FIndex:=TChmSiteMap.Create(stindex);
           FIndex:=TChmSiteMap.Create(stindex);
           FIndex.loadfromfile(FIndexFileName);
           FIndex.loadfromfile(FIndexFileName);
         except
         except

+ 15 - 8
packages/chm/src/chmsitemap.pas

@@ -351,15 +351,22 @@ var
 begin
 begin
   if Assigned(FHTMLParser) then FHTMLParser.Free;
   if Assigned(FHTMLParser) then FHTMLParser.Free;
   TmpStream := TMemoryStream.Create;
   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 := 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;
 end;
 
 
 procedure TChmSiteMap.LoadFromStream(AStream: TStream);
 procedure TChmSiteMap.LoadFromStream(AStream: TStream);

+ 1 - 1
packages/chm/src/chmwriter.pas

@@ -1533,7 +1533,7 @@ begin
   FURLSTRStream.Free;
   FURLSTRStream.Free;
   FURLTBLStream.Free;
   FURLTBLStream.Free;
   FFiftiMainStream.Free;
   FFiftiMainStream.Free;
-  FIDXHdrStream.Create;
+  FIDXHdrStream.Free;
   SpareString.free;
   SpareString.free;
   SpareUrlStr.free;
   SpareUrlStr.free;
   FAvlUrlStr.FreeAndClear;
   FAvlUrlStr.FreeAndClear;