Browse Source

buffer: zero-length buffers shouldn't be slab-backed

v0.8.18-release
Bert Belder 12 years ago
parent
commit
a6b8f63660
  1. 10
      lib/buffer.js

10
lib/buffer.js

@ -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…
Cancel
Save