Skip to content

Commit

Permalink
buffer: make byteLength throw on invalid input
Browse files Browse the repository at this point in the history
PR-URL: #8946
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Teddy Katz <teddy.katz@gmail.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
  • Loading branch information
mscdex authored and jasnell committed Oct 10, 2016
1 parent 01db04b commit c9dade4
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 7 deletions.
2 changes: 0 additions & 2 deletions doc/api/buffer.md
Expand Up @@ -631,8 +631,6 @@ console.log(`${str}: ${str.length} characters, ` +
When `string` is a `Buffer`/[`DataView`]/[`TypedArray`]/[`ArrayBuffer`], the When `string` is a `Buffer`/[`DataView`]/[`TypedArray`]/[`ArrayBuffer`], the
actual byte length is returned. actual byte length is returned.


Otherwise, converts to `String` and returns the byte length of string.

### Class Method: Buffer.compare(buf1, buf2) ### Class Method: Buffer.compare(buf1, buf2)
<!-- YAML <!-- YAML
added: v0.11.13 added: v0.11.13
Expand Down
2 changes: 1 addition & 1 deletion lib/buffer.js
Expand Up @@ -369,7 +369,7 @@ function byteLength(string, encoding) {
return string.byteLength; return string.byteLength;
} }


string = '' + string; throw new TypeError('"string" must be a string, Buffer, or ArrayBuffer');
} }


var len = string.length; var len = string.length;
Expand Down
12 changes: 8 additions & 4 deletions test/parallel/test-buffer-bytelength.js
Expand Up @@ -7,10 +7,14 @@ const SlowBuffer = require('buffer').SlowBuffer;
const vm = require('vm'); const vm = require('vm');


// coerce values to string // coerce values to string
assert.strictEqual(Buffer.byteLength(32, 'latin1'), 2); assert.throws(() => { Buffer.byteLength(32, 'latin1'); },
assert.strictEqual(Buffer.byteLength(NaN, 'utf8'), 3); '"string" must be a string, Buffer, or ArrayBuffer');
assert.strictEqual(Buffer.byteLength({}, 'latin1'), 15); assert.throws(() => { Buffer.byteLength(NaN, 'utf8'); },
assert.strictEqual(Buffer.byteLength(), 9); '"string" must be a string, Buffer, or ArrayBuffer');
assert.throws(() => { Buffer.byteLength({}, 'latin1'); },
'"string" must be a string, Buffer, or ArrayBuffer');
assert.throws(() => { Buffer.byteLength(); },
'"string" must be a string, Buffer, or ArrayBuffer');


assert(ArrayBuffer.isView(new Buffer(10))); assert(ArrayBuffer.isView(new Buffer(10)));
assert(ArrayBuffer.isView(new SlowBuffer(10))); assert(ArrayBuffer.isView(new SlowBuffer(10)));
Expand Down

0 comments on commit c9dade4

Please sign in to comment.