From 733559b633e6e48b5858bc17edb511544df34262 Mon Sep 17 00:00:00 2001 From: marco Date: Mon, 3 Sep 2018 15:11:33 +0000 Subject: [PATCH] * improve seealso handling when reading back binindex with chmls * avoid trailing zero chars when reading back binindex with chmls git-svn-id: trunk@39707 - --- packages/chm/src/chmreader.pas | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/chm/src/chmreader.pas b/packages/chm/src/chmreader.pas index e12eed5a06..668c617b5d 100644 --- a/packages/chm/src/chmreader.pas +++ b/packages/chm/src/chmreader.pas @@ -1016,6 +1016,7 @@ begin result:=head0) and (oldhead[n-1]=0) then dec(n); // remove trailing #0 setlength(ws,n div sizeof(widechar)); move(oldhead^,ws[1],n); for n:=1 to length(ws) do @@ -1081,6 +1082,15 @@ begin end; end; +procedure createentryseealso(Name:ansistring;CharIndex:integer;seealso:ansistring); +var litem : TChmSiteMapItem; +begin + item:=sitemap.items.NewItem; + item.KeyWord:=name; + item.SeeAlso:=seealso; +end; + + procedure parselistingblock(p:pbyte); var itemstack:TObjectStack; @@ -1193,8 +1203,11 @@ begin end; end; end; - if nrpairs<>0 Then - createentry(Name,CharIndex,Topic,Title); + if isseealso>0 then + createentryseealso(name,charindex,seealsostr) + else + if nrpairs<>0 Then + createentry(Name,CharIndex,Topic,Title); inc(head,4); // always 1 {$ifdef binindex} if head