]> zoso.dev Git - buffer.git/commitdiff
improve Buffer.byteLength(string, encoding)
authorFeross Aboukhadijeh <feross@feross.org>
Mon, 20 Apr 2015 20:46:41 +0000 (13:46 -0700)
committerFeross Aboukhadijeh <feross@feross.org>
Mon, 20 Apr 2015 20:46:41 +0000 (13:46 -0700)
From https://github.com/iojs/io.js/pull/1441/files

index.js

index 46f5a98e38fcc2549f01b9d5ca4d0207f59ee757..bbb73436317234127121c28e7961ccd535c3cb4a 100644 (file)
--- a/index.js
+++ b/index.js
@@ -205,35 +205,31 @@ Buffer.concat = function concat (list, totalLength) {
   return buf
 }
 
-Buffer.byteLength = function byteLength (str, encoding) {
-  var ret
-  str = str + ''
+Buffer.byteLength = function byteLength (string, encoding) {
+  if (typeof string !== 'string') string = String(string)
+
+  if (string.length === 0) return 0
+
   switch (encoding || 'utf8') {
     case 'ascii':
     case 'binary':
     case 'raw':
-      ret = str.length
-      break
+      return string.length
     case 'ucs2':
     case 'ucs-2':
     case 'utf16le':
     case 'utf-16le':
-      ret = str.length * 2
-      break
+      return string.length * 2
     case 'hex':
-      ret = str.length >>> 1
-      break
+      return string.length >>> 1
     case 'utf8':
     case 'utf-8':
-      ret = utf8ToBytes(str).length
-      break
+      return utf8ToBytes(string).length
     case 'base64':
-      ret = base64ToBytes(str).length
-      break
+      return base64ToBytes(string).length
     default:
-      ret = str.length
+      return string.length
   }
-  return ret
 }
 
 // pre-set for values that may exist in the future