diff --git a/lib/buffer.js b/lib/buffer.js index 571eb5ba86b..351f4eac2eb 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -114,7 +114,7 @@ function Buffer (subject, encoding, offset) { if (this.length > Buffer.poolSize) { // Big buffer, just alloc one. - this.parent = new SlowBuffer(subject, encoding); + this.parent = new SlowBuffer(this.length); this.offset = 0; } else { @@ -123,19 +123,16 @@ function Buffer (subject, encoding, offset) { this.parent = pool; this.offset = pool.used; pool.used += this.length; + } - // Do we need to write stuff? - if (type !== 'number') { - // Assume object is an array - if (type === 'object') { - for (var i = 0; i < this.length; i++) { - this.parent[i + this.offset] = subject[i]; - } - } else { - // We are a string - this.write(subject, 0, encoding); - } + // Assume object is an array + if (Array.isArray(subject)) { + for (var i = 0; i < this.length; i++) { + this.parent[i + this.offset] = subject[i]; } + } else if (type == 'string') { + // We are a string + this.write(subject, 0, encoding); } }