diff options
| -rw-r--r-- | ext/bg/js/settings-popup-preview.js | 7 | ||||
| -rw-r--r-- | ext/fg/js/frontend.js | 17 | 
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);              } |