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 BridgeAR committed Dec 25, 2019
1 parent 5661466 commit cd6b00d
Showing 1 changed file with 9 additions and 20 deletions.
29 changes: 9 additions & 20 deletions lib/_stream_writable.js
Expand Up @@ -323,7 +323,7 @@ Writable.prototype.write = function(chunk, encoding, cb) {
errorOrDestroy(this, err);
} 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 @@ -367,15 +367,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 @@ -409,14 +400,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 @@ -432,7 +422,6 @@ function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
state.lastBufferedRequest = {
chunk,
encoding,
isBuf,
callback: cb,
next: null
};
Expand Down Expand Up @@ -561,7 +550,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 cd6b00d

Please sign in to comment.