From 757e6858031de8e67f30835d4cd96e0030e2a5a9 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Wed, 13 Dec 2017 07:34:51 +0100 Subject: [PATCH] stream: remove `undefined` check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `validChunk` allowed `undefined` as a chunk in object mode; however, this was redundant, since: - `validChunk()` is only used by `.write()` - If the `validChunk()` check passes for `undefined`, `.write()` calls `writeOrBuffer()` - If `writeOrBuffer()` does not receive a Buffer, it calls `decodeChunk()` - `decodeChunk()` ignores `undefined` because it checks `typeof chunk === 'string'` - After that call, `chunk.length` is accessed, which throws an error if `chunk` is undefined`. This “fixes” a bug in the sense that `state.pendingcb` is no longer incremented for write attempts that fail like this. PR-URL: https://github.com/nodejs/node/pull/17644 Reviewed-By: Ruben Bridgewater Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca Reviewed-By: Anatoli Papirovski Reviewed-By: James M Snell Reviewed-By: Jon Moss --- lib/_stream_writable.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/_stream_writable.js b/lib/_stream_writable.js index 02481739250635..f5f05486d233a9 100644 --- a/lib/_stream_writable.js +++ b/lib/_stream_writable.js @@ -249,9 +249,7 @@ function validChunk(stream, state, chunk, cb) { if (chunk === null) { er = new errors.TypeError('ERR_STREAM_NULL_VALUES'); - } else if (typeof chunk !== 'string' && - chunk !== undefined && - !state.objectMode) { + } else if (typeof chunk !== 'string' && !state.objectMode) { er = new errors.TypeError('ERR_INVALID_ARG_TYPE', 'chunk', ['string', 'Buffer']); }