Skip to content

Commit

Permalink
stream: simplify isBuf
Browse files Browse the repository at this point in the history
PR-URL: #31067
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Denys Otrishko <shishugi@gmail.com>
  • Loading branch information
ronag authored and targos committed Jan 14, 2020
1 parent 6d6a480 commit 4e55e85
Showing 1 changed file with 9 additions and 20 deletions.
29 changes: 9 additions & 20 deletions lib/_stream_writable.js
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ Writable.prototype.write = function(chunk, encoding, cb) {
writeAfterEnd(this, cb);
else if (isBuf || validChunk(this, state, chunk, cb)) {
state.pendingcb++;
ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
ret = writeOrBuffer(this, state, chunk, encoding, cb);
}

return ret;
Expand Down Expand Up @@ -357,15 +357,6 @@ ObjectDefineProperty(Writable.prototype, 'writableBuffer', {
}
});

function decodeChunk(state, chunk, encoding) {
if (!state.objectMode &&
state.decodeStrings !== false &&
typeof chunk === 'string') {
chunk = Buffer.from(chunk, encoding);
}
return chunk;
}

ObjectDefineProperty(Writable.prototype, 'writableEnded', {
// Making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
Expand Down Expand Up @@ -399,14 +390,13 @@ ObjectDefineProperty(Writable.prototype, 'writableCorked', {
// If we're already writing something, then just put this
// in the queue, and wait our turn. Otherwise, call _write
// If we return false, then we need a drain event, so set that flag.
function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
if (!isBuf) {
var newChunk = decodeChunk(state, chunk, encoding);
if (chunk !== newChunk) {
isBuf = true;
encoding = 'buffer';
chunk = newChunk;
}
function writeOrBuffer(stream, state, chunk, encoding, cb) {
if (!state.objectMode &&
state.decodeStrings !== false &&
encoding !== 'buffer' &&
typeof chunk === 'string') {
chunk = Buffer.from(chunk, encoding);
encoding = 'buffer';
}
const len = state.objectMode ? 1 : chunk.length;

Expand All @@ -422,7 +412,6 @@ function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
state.lastBufferedRequest = {
chunk,
encoding,
isBuf,
callback: cb,
next: null
};
Expand Down Expand Up @@ -558,7 +547,7 @@ function clearBuffer(stream, state) {
var allBuffers = true;
while (entry) {
buffer[count] = entry;
if (!entry.isBuf)
if (entry.encoding !== 'buffer')
allBuffers = false;
entry = entry.next;
count += 1;
Expand Down

0 comments on commit 4e55e85

Please sign in to comment.