|
@@ -1205,7 +1205,8 @@ begin
|
|
begin
|
|
begin
|
|
sitemap.free;
|
|
sitemap.free;
|
|
Result:=AbortAndTryTextual;
|
|
Result:=AbortAndTryTextual;
|
|
- end;
|
|
|
|
|
|
+ end
|
|
|
|
+ else Index.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
function TChmReader.GetTOCSitemap(ForceXML:boolean=false): TChmSiteMap;
|
|
function TChmReader.GetTOCSitemap(ForceXML:boolean=false): TChmSiteMap;
|
|
@@ -1281,7 +1282,7 @@ begin
|
|
Exit;
|
|
Exit;
|
|
end;
|
|
end;
|
|
|
|
|
|
- // Binary Toc Exists
|
|
|
|
|
|
+ // Binary Toc Exists
|
|
Result := TChmSiteMap.Create(stTOC);
|
|
Result := TChmSiteMap.Create(stTOC);
|
|
|
|
|
|
EntryInfoOffset := NtoLE(TOC.ReadDWord);
|
|
EntryInfoOffset := NtoLE(TOC.ReadDWord);
|
|
@@ -1289,10 +1290,17 @@ begin
|
|
EntryCount := NtoLE(TOC.ReadDWord);
|
|
EntryCount := NtoLE(TOC.ReadDWord);
|
|
TOPICSOffset := NtoLE(TOC.ReadDWord);
|
|
TOPICSOffset := NtoLE(TOC.ReadDWord);
|
|
|
|
|
|
|
|
+ if EntryCount <> 0 then
|
|
|
|
+ begin
|
|
|
|
+ Toc.Free;
|
|
|
|
+ Exit;
|
|
|
|
+ end;
|
|
|
|
+
|
|
NextItem := EntryInfoOffset;
|
|
NextItem := EntryInfoOffset;
|
|
repeat
|
|
repeat
|
|
NextItem := AddTOCItem(Toc, NextItem, Result.Items);
|
|
NextItem := AddTOCItem(Toc, NextItem, Result.Items);
|
|
until NextItem = 0;
|
|
until NextItem = 0;
|
|
|
|
+ TOC.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
function TChmReader.HasContextList: Boolean;
|
|
function TChmReader.HasContextList: Boolean;
|