Browse Source

buffer: don't set `kNoZeroFill` flag in allocUnsafe

If `kNoZeroFill` is set here, it won't be reset in case of
pooled allocation. In case of "slow" allocation it will be
set later anyway.

Fixes: https://github.com/nodejs/node/issues/6006
PR-URL: https://github.com/nodejs/node/pull/6007
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Evan Lucas <evanlucas@me.com>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
process-exit-stdio-flushing
Vladimir Kurchatkin 9 years ago
committed by James M Snell
parent
commit
0dcb026db3
  1. 2
      lib/buffer.js
  2. 12
      test/parallel/test-buffer-safe-unsafe.js

2
lib/buffer.js

@ -163,8 +163,6 @@ Buffer.alloc = function(size, fill, encoding) {
Buffer.allocUnsafe = function(size) {
if (typeof size !== 'number')
throw new TypeError('"size" argument must be a number');
if (size > 0)
flags[kNoZeroFill] = 1;
return allocate(size);
};

12
test/parallel/test-buffer-safe-unsafe.js

@ -7,8 +7,18 @@ const safe = Buffer.alloc(10);
function isZeroFilled(buf) {
for (let n = 0; n < buf.length; n++)
if (buf[n] > 0) return false;
if (buf[n] !== 0) return false;
return true;
}
assert(isZeroFilled(safe));
// Test that unsafe allocations doesn't affect subsequent safe allocations
Buffer.allocUnsafe(10);
assert(isZeroFilled(new Float64Array(10)));
new Buffer(10);
assert(isZeroFilled(new Float64Array(10)));
Buffer.allocUnsafe(10);
assert(isZeroFilled(Buffer.alloc(10)));

Loading…
Cancel
Save