summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/bg/js/settings-popup-preview.js7
-rw-r--r--ext/fg/js/frontend.js17
2 files changed, 17 insertions, 7 deletions
diff --git a/ext/bg/js/settings-popup-preview.js b/ext/bg/js/settings-popup-preview.js
index b12fb726..ce6da4c0 100644
--- a/ext/bg/js/settings-popup-preview.js
+++ b/ext/bg/js/settings-popup-preview.js
@@ -158,9 +158,14 @@ class SettingsPopupPreview {
const range = document.createRange();
range.selectNode(textNode);
const source = new TextSourceRange(range, range.toString(), null);
+ if (source === null) { return; }
this.frontend.textSourceLast = null;
- await this.frontend.searchSource(source, 'script');
+ try {
+ await this.frontend.searchSource(source, 'script');
+ } finally {
+ source.cleanup();
+ }
await this.frontend.lastShowPromise;
if (this.frontend.popup.isVisible()) {
diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js
index 897c7b73..5e2ef529 100644
--- a/ext/fg/js/frontend.js
+++ b/ext/fg/js/frontend.js
@@ -319,19 +319,27 @@ class Frontend {
}
const textSource = docRangeFromPoint(x, y, this.options);
- return await this.searchSource(textSource, cause);
+ if (textSource === null) {
+ return;
+ }
+
+ try {
+ return await this.searchSource(textSource, cause);
+ } finally {
+ textSource.cleanup();
+ }
} catch (e) {
this.onError(e);
}
}
async searchSource(textSource, cause) {
- let hideResults = textSource === null;
+ let hideResults = false;
let searched = false;
let success = false;
try {
- if (!hideResults && (!this.textSourceLast || !this.textSourceLast.equals(textSource))) {
+ if (!this.textSourceLast || !this.textSourceLast.equals(textSource)) {
searched = true;
this.pendingLookup = true;
const focus = (cause === 'mouse');
@@ -351,9 +359,6 @@ class Frontend {
this.onError(e);
}
} finally {
- if (textSource !== null) {
- textSource.cleanup();
- }
if (hideResults && this.options.scanning.autoHideResults) {
this.searchClear(true);
}