diff --git a/core/websock.js b/core/websock.js index 9291d4ed..6b033615 100644 --- a/core/websock.js +++ b/core/websock.js @@ -101,7 +101,13 @@ Websock.prototype = { rQshiftStr: function (len) { if (typeof(len) === 'undefined') { len = this.rQlen(); } const arr = this.rQshiftBytes(len); - return String.fromCharCode.apply(null, arr); + let str = ""; + // Handle large arrays in steps to avoid long strings on the stack + for (let i = 0; i < len; i += 4096) { + let part = arr.slice(i, i + Math.min(4096, len)); + str = str.concat(String.fromCharCode.apply(null, part)); + } + return str; }, rQshiftBytes: function (len) {