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