]> zoso.dev Git - buffer.git/commitdiff
base64 changes to improve node compatibility
authorJesse Tane <jesse.tane@gmail.com>
Tue, 16 Dec 2014 00:09:06 +0000 (19:09 -0500)
committerJesse Tane <jesse.tane@gmail.com>
Mon, 22 Dec 2014 22:44:16 +0000 (17:44 -0500)
index.js

index 5321a25e6a0e2570541282682cbf23d655b7bb09..ebe1406694bc4b5cf74a92ab1252f1ada2958a98 100644 (file)
--- a/index.js
+++ b/index.js
@@ -75,8 +75,6 @@ function Buffer (subject, encoding, noZero) {
   if (type === 'number')
     length = subject > 0 ? subject >>> 0 : 0
   else if (type === 'string') {
-    if (encoding === 'base64')
-      subject = base64clean(subject)
     length = Buffer.byteLength(subject, encoding)
   } else if (type === 'object' && subject !== null) { // assume object is array-like
     if (subject.type === 'Buffer' && isArray(subject.data))
@@ -986,11 +984,13 @@ Buffer._augment = function (arr) {
   return arr
 }
 
-var INVALID_BASE64_RE = /[^+\/0-9A-z]/g
+var INVALID_BASE64_RE = /[^+\/0-9A-z\-]/g
 
 function base64clean (str) {
   // Node strips out invalid characters like \n and \t from the string, base64-js does not
   str = stringtrim(str).replace(INVALID_BASE64_RE, '')
+  // Node converts strings with length < 2 to ''
+  if (str.length < 2) return ''
   // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
   while (str.length % 4 !== 0) {
     str = str + '='
@@ -1056,7 +1056,7 @@ function utf16leToBytes (str) {
 }
 
 function base64ToBytes (str) {
-  return base64.toByteArray(str)
+  return base64.toByteArray(base64clean(str))
 }
 
 function blitBuffer (src, dst, offset, length, unitSize) {