Avoid big strings on the stack
Previous code resulted in RangeErrors by potentially creating big strings. Fixes issue #1065
This commit is contained in:
parent
362bd5e3a2
commit
db9daa98a5
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue