buffer: zero-length buffers shouldn't be slab-backed
This commit is contained in:
parent
4dd70bb12c
commit
e501ce4b21
@ -199,8 +199,9 @@ function coerce(length) {
|
||||
}
|
||||
|
||||
|
||||
// Buffer
|
||||
var zeroBuffer = new SlowBuffer(0);
|
||||
|
||||
// Buffer
|
||||
function Buffer(subject, encoding, offset) {
|
||||
if (!(this instanceof Buffer)) {
|
||||
return new Buffer(subject, encoding, offset);
|
||||
@ -242,13 +243,18 @@ function Buffer(subject, encoding, offset) {
|
||||
this.parent = new SlowBuffer(this.length);
|
||||
this.offset = 0;
|
||||
|
||||
} else {
|
||||
} else if (this.length > 0) {
|
||||
// Small buffer.
|
||||
if (!pool || pool.length - pool.used < this.length) allocPool();
|
||||
this.parent = pool;
|
||||
this.offset = pool.used;
|
||||
pool.used += this.length;
|
||||
if (pool.used & 7) pool.used = (pool.used + 8) & ~7;
|
||||
|
||||
} else {
|
||||
// Zero-length buffer
|
||||
this.parent = zeroBuffer;
|
||||
this.offset = 0;
|
||||
}
|
||||
|
||||
// Treat array-ish objects as a byte array.
|
||||
|
Loading…
x
Reference in New Issue
Block a user