]> zoso.dev Git - buffer.git/commitdiff
Fix: treat numbers as unsigned 8-bit for .indexOf and .includes
authorFeross Aboukhadijeh <feross@feross.org>
Mon, 8 Aug 2016 05:08:07 +0000 (22:08 -0700)
committerFeross Aboukhadijeh <feross@feross.org>
Mon, 8 Aug 2016 05:08:07 +0000 (22:08 -0700)
Caught by the new node.js tests

index.js

index de76c7adaea843ba4a15ca99f0e5e8e2d13fd63d..3b2682228cf6d904cfbb36a0ae57c13d1013ac88 100644 (file)
--- a/index.js
+++ b/index.js
@@ -708,6 +708,9 @@ Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
     return arrayIndexOf(this, val, byteOffset, encoding)
   }
   if (typeof val === 'number') {
+    // Numbers will be interpreted as unsigned 8-bit integer values between
+    // `0` and `255`.
+    val &= 0xFF
     if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
       return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
     }
@@ -735,7 +738,7 @@ function hexWrite (buf, string, offset, length) {
 
   // must be an even number of digits
   var strLen = string.length
-  if (strLen % 2 !== 0) throw new Error('Invalid hex string')
+  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
 
   if (length > strLen / 2) {
     length = strLen / 2