From d8529b0262ffeb662da89f66bb2155134d327b70 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 13 Oct 2017 10:55:30 +0530 Subject: [PATCH] Make the entries in the link_to_map unique --- src/calibre/srv/render_book.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/calibre/srv/render_book.py b/src/calibre/srv/render_book.py index be212b905d..30aae369a9 100644 --- a/src/calibre/srv/render_book.py +++ b/src/calibre/srv/render_book.py @@ -354,7 +354,7 @@ class Container(ContainerBase): a.set('href', 'javascript:void(0)') parts = decode_url(href.split('|')[1]) lname, lfrag = parts[0], parts[1] - ltm.setdefault(lname, {}).setdefault(lfrag or '', []).append(name) + ltm.setdefault(lname, {}).setdefault(lfrag or '', set()).add(name) a.set('data-' + link_uid, json.dumps({'name':lname, 'frag':lfrag}, ensure_ascii=False)) else: a.set('target', '_blank') @@ -367,6 +367,10 @@ class Container(ContainerBase): for elem in xlink_xpath(self.parsed(name)): elem.set(xlink, link_replacer(name, elem.get(xlink))) + for name, amap in ltm.iteritems(): + for k, v in tuple(amap.iteritems()): + amap[k] = tuple(v) # needed for JSON serialization + tuple(map(self.dirty, changed)) def serialize_item(self, name):