diff --git a/lib/buffer.js b/lib/buffer.js index ac4f61bf5d0849..5ef207eb780863 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -175,14 +175,14 @@ Buffer.from = function(value, encodingOrOffset, length) { if (isAnyArrayBuffer(value)) return fromArrayBuffer(value, encodingOrOffset, length); - if (value == null) + if (value === null || value === undefined) throw new TypeError(kFromErrorMsg); if (typeof value === 'number') throw new TypeError('"value" argument must not be a number'); const valueOf = value.valueOf && value.valueOf(); - if (valueOf != null && valueOf !== value) + if (valueOf !== null && valueOf !== undefined && valueOf !== value) return Buffer.from(valueOf, encodingOrOffset, length); var b = fromObject(value); @@ -292,9 +292,9 @@ function allocate(size) { function fromString(string, encoding) { var length; if (typeof encoding !== 'string' || encoding.length === 0) { - encoding = 'utf8'; if (string.length === 0) return new FastBuffer(); + encoding = 'utf8'; length = binding.byteLengthUtf8(string); } else { length = byteLength(string, encoding, true);