stream: fix Readable.wrap objectMode falsy values
A streams1 stream will have its falsy values such as 0, false, or "" eaten by the upgrade to streams2, even when objectMode is enabled. Include test for said cases. Reviewed-by: isaacs <i@izs.me> Reviewed-by: Trevor Norris <trev.norris@gmail.com>
This commit is contained in:
parent
92518892ec
commit
8e2cc69e78
@ -810,7 +810,12 @@ Readable.prototype.wrap = function(stream) {
|
||||
stream.on('data', function(chunk) {
|
||||
if (state.decoder)
|
||||
chunk = state.decoder.write(chunk);
|
||||
if (!chunk || !state.objectMode && !chunk.length)
|
||||
|
||||
// don't skip over falsy values in objectMode
|
||||
//if (state.objectMode && util.isNullOrUndefined(chunk))
|
||||
if (state.objectMode && (chunk === null || chunk === undefined))
|
||||
return;
|
||||
else if (!state.objectMode && (!chunk || !chunk.length))
|
||||
return;
|
||||
|
||||
var ret = self.push(chunk);
|
||||
|
@ -102,6 +102,9 @@ function runTest(highWaterMark, objectMode, produce) {
|
||||
runTest(10, false, function(){ return new Buffer('xxxxxxxxxx'); });
|
||||
runTest(1, true, function(){ return { foo: 'bar' }; });
|
||||
|
||||
var objectChunks = [ 5, 'a', false, 0, '', 'xyz', { x: 4 }, 7, [], 555 ];
|
||||
runTest(1, true, function(){ return objectChunks.shift() });
|
||||
|
||||
process.on('exit', function() {
|
||||
assert.equal(testRuns, completedRuns);
|
||||
console.log('ok');
|
||||
|
Loading…
x
Reference in New Issue
Block a user