From d654a5d6cfab0fe607726cdfc2f7557419da0276 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sun, 2 Aug 2020 12:46:52 -0400 Subject: [PATCH] Fix search operation broken by search worker going away Related commit: - https://github.com/gorhill/uBlock/commit/23332400f5f16de1a54265dd7bb110ea7e1da57c Since the search worker can go away after its time-to-live elapsed, we may need to pass again the haystack on which search operations are performed. --- src/js/codemirror/search-thread.js | 6 +++++- src/js/codemirror/search.js | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/js/codemirror/search-thread.js b/src/js/codemirror/search-thread.js index 29d4465d6..c3eda6de8 100644 --- a/src/js/codemirror/search-thread.js +++ b/src/js/codemirror/search-thread.js @@ -157,6 +157,10 @@ if ( }, { once: true }); }; + const needHaystack = function() { + return worker instanceof Object === false; + }; + const setHaystack = function(content) { init(); worker.postMessage({ what: 'setHaystack', content }); @@ -183,7 +187,7 @@ if ( }); }; - self.searchThread = { setHaystack, search, shutdown }; + self.searchThread = { needHaystack, setHaystack, search, shutdown }; } /******************************************************************************/ diff --git a/src/js/codemirror/search.js b/src/js/codemirror/search.js index cc91b742d..4c0f7e86c 100644 --- a/src/js/codemirror/search.js +++ b/src/js/codemirror/search.js @@ -286,7 +286,7 @@ } state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query)); cm.addOverlay(state.overlay); - if ( state.dirty ) { + if ( state.dirty || self.searchThread.needHaystack() ) { self.searchThread.setHaystack(cm.getValue()); state.dirty = false; }