Avoid big strings on the stack
Previous code resulted in RangeErrors by potentially creating big strings. Fixes issue #1065
This commit is contained in:
@@ -101,7 +101,13 @@ Websock.prototype = {
|
|||||||
rQshiftStr: function (len) {
|
rQshiftStr: function (len) {
|
||||||
if (typeof(len) === 'undefined') { len = this.rQlen(); }
|
if (typeof(len) === 'undefined') { len = this.rQlen(); }
|
||||||
const arr = this.rQshiftBytes(len);
|
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) {
|
rQshiftBytes: function (len) {
|
||||||
|
|||||||
Reference in New Issue
Block a user