Fixed #335
diff --git a/src/main/java/com/fasterxml/jackson/core/Base64Variant.java b/src/main/java/com/fasterxml/jackson/core/Base64Variant.java
index 84f27dc..5cddea5 100644
--- a/src/main/java/com/fasterxml/jackson/core/Base64Variant.java
+++ b/src/main/java/com/fasterxml/jackson/core/Base64Variant.java
@@ -449,7 +449,7 @@
      * assumption is that caller will ensure it is given in proper state, and
      * used as appropriate afterwards.
      * 
-     * @since 2.2.3
+     * @since 2.3
      *
      * @throws IllegalArgumentException if input is not valid base64 encoded data
      */
@@ -458,16 +458,12 @@
         int ptr = 0;
         int len = str.length();
         
-        main_loop:
         while (ptr < len) {
             // first, we'll skip preceding white space, if any
             char ch;
             do {
                 ch = str.charAt(ptr++);
-                if (ptr >= len) {
-                    break main_loop;
-                }
-            } while (ch <= INT_SPACE);
+            } while ((ptr < len) && (ch <= INT_SPACE));
             int bits = decodeBase64Char(ch);
             if (bits < 0) {
                 _reportInvalidBase64(ch, 0, null);
diff --git a/src/test/java/com/fasterxml/jackson/core/base64/TestBase64Codec.java b/src/test/java/com/fasterxml/jackson/core/base64/TestBase64Codec.java
index 4b4b7b2..dabcc39 100644
--- a/src/test/java/com/fasterxml/jackson/core/base64/TestBase64Codec.java
+++ b/src/test/java/com/fasterxml/jackson/core/base64/TestBase64Codec.java
@@ -55,5 +55,14 @@
         } catch (IllegalArgumentException iae) {
             verifyException(iae, "length must be exactly");
         }
+
+        // also, for [jackson-core#335]
+        final String BASE64_HELLO = "aGVsbG8=!";
+        try {
+            Base64Variants.MIME.decode(BASE64_HELLO);
+            fail("Should not pass");
+        } catch (IllegalArgumentException iae) {
+            verifyException(iae, "Illegal character");
+        }
     }
 }