buffer: make byteLength work with Buffer correctly
Make the byteLength work correctly when input is Buffer. e.g: ```js // The incomplete unicode string Buffer.byteLength(new Buffer([0xe4, 0xb8, 0xad, 0xe6, 0x96])) ``` The old output: 9 The new output: 5 PR-URL: https://github.com/nodejs/node/pull/4738 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Brian White <mscdex@mscdex.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
5f57005ec9
commit
8d0ca10752
@ -262,6 +262,9 @@ function base64ByteLength(str, bytes) {
|
||||
|
||||
|
||||
function byteLength(string, encoding) {
|
||||
if (string instanceof Buffer)
|
||||
return string.length;
|
||||
|
||||
if (typeof string !== 'string')
|
||||
string = '' + string;
|
||||
|
||||
|
@ -10,6 +10,12 @@ assert.equal(Buffer.byteLength(NaN, 'utf8'), 3);
|
||||
assert.equal(Buffer.byteLength({}, 'binary'), 15);
|
||||
assert.equal(Buffer.byteLength(), 9);
|
||||
|
||||
// buffer
|
||||
var incomplete = new Buffer([0xe4, 0xb8, 0xad, 0xe6, 0x96]);
|
||||
assert.equal(Buffer.byteLength(incomplete), 5);
|
||||
var ascii = new Buffer('abc');
|
||||
assert.equal(Buffer.byteLength(ascii), 3);
|
||||
|
||||
// special case: zero length string
|
||||
assert.equal(Buffer.byteLength('', 'ascii'), 0);
|
||||
assert.equal(Buffer.byteLength('', 'HeX'), 0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user