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>
This commit is contained in:
Vladimir Kurchatkin 2016-04-02 02:39:25 +03:00 committed by James M Snell
parent 0928584444
commit 0dcb026db3
2 changed files with 11 additions and 3 deletions

View File

@ -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);
};

View File

@ -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)));