From d2ccda55ccb1ae413eb1fac6b021d6912b6ca68b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 30 Dec 2016 15:23:43 +0530 Subject: [PATCH] Ensure toc items are not duplicated in the toc anchor map --- src/calibre/srv/render_book.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/calibre/srv/render_book.py b/src/calibre/srv/render_book.py index 05d85d0920..8c04142028 100644 --- a/src/calibre/srv/render_book.py +++ b/src/calibre/srv/render_book.py @@ -154,11 +154,13 @@ def get_length(root): def toc_anchor_map(toc): ans = defaultdict(list) + seen_map = defaultdict(set) def process_node(node): name = node['dest'] - if name: + if name and node['id'] not in seen_map[name]: ans[name].append({'id':node['id'], 'frag':node['frag']}) + seen_map[name].add(node['id']) tuple(map(process_node, node['children'])) process_node(toc)