From fce7360cddc0cd27a863e3ac27a84b65cb545b7e Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 6 Aug 2018 15:32:18 -0700 Subject: [PATCH] Avoid stack overflows due to spread in Array.splice call --- src/tree-sitter-language-mode.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/tree-sitter-language-mode.js b/src/tree-sitter-language-mode.js index 5026d3b86..c229cec19 100644 --- a/src/tree-sitter-language-mode.js +++ b/src/tree-sitter-language-mode.js @@ -1,5 +1,5 @@ const Parser = require('tree-sitter') -const {Point, Range} = require('text-buffer') +const {Point, Range, spliceArray} = require('text-buffer') const {Patch} = require('superstring') const {Emitter, Disposable} = require('event-kit') const ScopeDescriptor = require('./scope-descriptor') @@ -52,10 +52,11 @@ class TreeSitterLanguageMode { this.subscription = this.buffer.onDidChangeText(({changes}) => { for (let i = 0, {length} = changes; i < length; i++) { const {oldRange, newRange} = changes[i] - this.isFoldableCache.splice( + spliceArray( + this.isFoldableCache, newRange.start.row, oldRange.end.row - oldRange.start.row, - ...new Array(newRange.end.row - newRange.start.row) + {length: newRange.end.row - newRange.start.row} ) }