E-book viewer: Fix a regression that could cause the viewer to enter an infinite loop when displaying the result of a search that has only one match that is not found. Fixes #2038747 [Private bug](https://bugs.launchpad.net/calibre/+bug/2038747)

This commit is contained in:
Kovid Goyal 2023-10-17 09:02:56 +05:30
parent 3efaad9553
commit 2b5b161379
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -1420,7 +1420,7 @@ class View:
if sr.result_num is 1: if sr.result_num is 1:
self.search_result_discovery = { self.search_result_discovery = {
'queue': v'[]', 'on_discovery': sr.on_discovery, 'in_flight': None, 'discovered': False, 'queue': v'[]', 'on_discovery': sr.on_discovery, 'in_flight': None, 'discovered': False,
'first_search_result': sr, 'finished': False, 'first_search_result': sr, 'finished': False, 'jump_forced': False,
} }
if not self.search_result_discovery or self.search_result_discovery.discovered or self.search_result_discovery.on_discovery is not sr.on_discovery: if not self.search_result_discovery or self.search_result_discovery.discovered or self.search_result_discovery.on_discovery is not sr.on_discovery:
return return
@ -1437,9 +1437,10 @@ class View:
ui_operations.search_result_discovered(sr) ui_operations.search_result_discovered(sr)
elif not self.search_result_discovery.discovered and self.search_result_discovery.queue.length: elif not self.search_result_discovery.discovered and self.search_result_discovery.queue.length:
self.show_search_result(self.search_result_discovery.queue.shift()) self.show_search_result(self.search_result_discovery.queue.shift())
elif not self.search_result_discovery.discovered and self.search_result_discovery.finished: elif not self.search_result_discovery.discovered and self.search_result_discovery.finished and not self.search_result_discovery.jump_forced:
sr = self.search_result_discovery.first_search_result sr = self.search_result_discovery.first_search_result
sr.force_jump_to = True sr.force_jump_to = True
self.search_result_discovery.jump_forced = True
self.show_search_result(sr) self.show_search_result(sr)
def search_result_discovered(self, data): def search_result_discovered(self, data):