Fix for issue #2374, maximum call stack exceeded in 64 bit chrome when pasting large chunks.

This commit is contained in:
Scott Glajch 2015-02-25 13:00:39 -05:00
commit b5064a4bb3

View file

@ -311,11 +311,12 @@ var Document = function(text) {
if (lines.length == 0)
return {row: row, column: 0};
// apply doesn't work for big arrays (smallest threshold is on safari 0xFFFF)
// to circumvent that we have to break huge inserts into smaller chunks here
while (lines.length > 0xF000) {
var end = this._insertLines(row, lines.slice(0, 0xF000));
lines = lines.slice(0xF000);
// Apply doesn't work for big arrays due to max call stack detection.
// Chrome 64 bit requires threshold smaller than 32k, using a safe value of 1k.
// To circumvent that we have to break huge inserts into smaller chunks here.
while (lines.length > 1000) {
var end = this._insertLines(row, lines.slice(0, 1000));
lines = lines.slice(1000);
row = end.row;
}