]> zoso.dev Git - buffer.git/commit
Ensure ES2016 engines construct Uint8Array (not Buffer) from Buffer.prototype.slice
authorDan Ehrenberg <littledan@chromium.org>
Thu, 14 Jan 2016 19:53:22 +0000 (11:53 -0800)
committerDan Ehrenberg <littledan@chromium.org>
Thu, 28 Jan 2016 18:56:29 +0000 (10:56 -0800)
commitd93a1e2b3326c3c49f579defe43c51559035f077
tree8275ec267667f9b37916346bcddc8a62a86af059
parent15b5805b55561fc0460e8d672ffc43d9e6252455
Ensure ES2016 engines construct Uint8Array (not Buffer) from Buffer.prototype.slice

In the ES2016 draft specification, TypedArray methods like
%TypedArray%.prototype.subarray() call out to a constructor for the result
based on the receiver. Ordinarily, the constructor is instance.constructor,
but subclasses can override this using the Symbol.species property on the
constructor.

Buffer.prototype.slice calls out to %TypedArray%.prototype.subarray, which
calls this calculated constructor with three arguments. The argument pattern
doesn't correspond to a constructor for Buffer, so without setting
Symbol.species appropriately, the wrong kind of result is created.

This patch sets Buffer[Symbol.species] to Uint8Array when appropriate, to
address the issue.
index.js