Tatsuhiro Tsujikawa 13 år sedan
förälder
incheckning
b25d8a9923
1 ändrade filer med 15 tillägg och 15 borttagningar
  1. 15 15
      src/base64.h

+ 15 - 15
src/base64.h

@@ -127,30 +127,30 @@ std::string decode(InputIterator first, InputIterator last)
     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
   };
   std::string res;
-  InputIterator k[5];
+  InputIterator k[4];
   int eq = 0;
   for(; first != last;) {
     for(int i = 1; i <= 4; ++i) {
-      k[i] = getNext(first, last, INDEX_TABLE);
-      if(k[i] == last) {
+      k[i-1] = getNext(first, last, INDEX_TABLE);
+      if(k[i-1] == last) {
         // If i == 1, input may look like this: "TWFu\n" (i.e.,
         // garbage at the end)
         if(i != 1) {
           res.clear();
         }
         return res;
-      } else if(*k[i] == '=' && eq == 0) {
+      } else if(*k[i-1] == '=' && eq == 0) {
         eq = i;
       }
-      first = k[i]+1;
+      first = k[i-1]+1;
     }
     if(eq) {
       break;
     }
-    int n = (INDEX_TABLE[static_cast<unsigned char>(*k[1])] << 18)+
-      (INDEX_TABLE[static_cast<unsigned char>(*k[2])] << 12)+
-      (INDEX_TABLE[static_cast<unsigned char>(*k[3])] << 6)+
-      INDEX_TABLE[static_cast<unsigned char>(*k[4])];
+    int n = (INDEX_TABLE[static_cast<unsigned char>(*k[0])] << 18)+
+      (INDEX_TABLE[static_cast<unsigned char>(*k[1])] << 12)+
+      (INDEX_TABLE[static_cast<unsigned char>(*k[2])] << 6)+
+      INDEX_TABLE[static_cast<unsigned char>(*k[3])];
     res += n >> 16;
     res += n >> 8 & 0xffu;
     res += n & 0xffu;
@@ -161,19 +161,19 @@ std::string decode(InputIterator first, InputIterator last)
       return res;
     } else {
       for(int i = eq; i <= 4; ++i) {
-        if(*k[i] != '=') {
+        if(*k[i-1] != '=') {
           res.clear();
           return res;
         }
       }
       if(eq == 3) {
-        int n = (INDEX_TABLE[static_cast<unsigned char>(*k[1])] << 18)+
-          (INDEX_TABLE[static_cast<unsigned char>(*k[2])] << 12);
+        int n = (INDEX_TABLE[static_cast<unsigned char>(*k[0])] << 18)+
+          (INDEX_TABLE[static_cast<unsigned char>(*k[1])] << 12);
         res += n >> 16;
       } else if(eq == 4) {
-        int n = (INDEX_TABLE[static_cast<unsigned char>(*k[1])] << 18)+
-          (INDEX_TABLE[static_cast<unsigned char>(*k[2])] << 12)+
-          (INDEX_TABLE[static_cast<unsigned char>(*k[3])] << 6);
+        int n = (INDEX_TABLE[static_cast<unsigned char>(*k[0])] << 18)+
+          (INDEX_TABLE[static_cast<unsigned char>(*k[1])] << 12)+
+          (INDEX_TABLE[static_cast<unsigned char>(*k[2])] << 6);
         res += n >> 16;
         res += n >> 8 & 0xffu;
       }