From 52cf15fc23f4fa30fc344a63ab5f28665a57d29e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 14 Sep 2020 09:04:40 +0530 Subject: [PATCH] Fix #1895472 [Private bug](https://bugs.launchpad.net/calibre/+bug/1895472) --- src/pyj/range_utils.pyj | 2 +- src/pyj/read_book/cfi.pyj | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pyj/range_utils.pyj b/src/pyj/range_utils.pyj index 803d608543..1b2f3304b6 100644 --- a/src/pyj/range_utils.pyj +++ b/src/pyj/range_utils.pyj @@ -114,7 +114,7 @@ def create_wrapper_function(wrapper_elem, r, intersecting_wrappers, process_wrap current_range.setEnd(node, end_offset) end_node = current_wrapper end_offset = 1 - crw = node.parentNode.dataset.calibreRangeWrapper + crw = node.parentNode?.dataset?.calibreRangeWrapper if crw: intersecting_wrappers[crw] = True current_range.surroundContents(current_wrapper) diff --git a/src/pyj/read_book/cfi.pyj b/src/pyj/read_book/cfi.pyj index c3b5b7e741..16089e1da4 100644 --- a/src/pyj/read_book/cfi.pyj +++ b/src/pyj/read_book/cfi.pyj @@ -389,9 +389,11 @@ def decode(cfi, doc): orig_offset = offset if node.parentNode?.nodeType is Node.ELEMENT_NODE and node.parentNode.dataset.calibreRangeWrapper: node = node.parentNode - node, offset, ok = node_for_text_offset(node.parentNode.childNodes, offset, node) + qnode, offset, ok = node_for_text_offset(node.parentNode.childNodes, offset, node) if not ok: error = "Offset out of range: " + orig_offset + if qnode: + node = qnode decoded.offset = offset decoded.node = node @@ -575,7 +577,7 @@ def at(x, y, doc): # {{{ def decode_with_range(cfi, doc): # {{{ doc = doc or window.document decoded = decode(cfi, doc) - if not decoded: + if not decoded or not decoded.node: return None node = decoded.node ndoc = node.ownerDocument