Fix rfc2047 token decoding logic for base64 encodings
Bug report: https://github.com/djcb/mu/issues/2429

Index: gmime/gmime-utils.c
--- gmime/gmime-utils.c.orig
+++ gmime/gmime-utils.c
@@ -1799,10 +1799,16 @@ rfc2047_token_decode (rfc2047_token *token, unsigned c
 	const unsigned char *inbuf = (const unsigned char *) token->text;
 	size_t len = token->length;
 	
-	if (token->encoding == 'B')
+	if (token->encoding == 'B') {
+		/* Note: A state of -1 means that a previous rfc2047 encoded-word token ended with an '=' (aka 'eof'),
+		 * so we need to reset the state. */
+		if (*state == -1)
+			*state = 0;
+
 		return g_mime_encoding_base64_decode_step (inbuf, len, outbuf, state, save);
-	else
-		return quoted_decode (inbuf, len, outbuf, state, save);
+	}
+
+	return quoted_decode (inbuf, len, outbuf, state, save);
 }
 
 static char *
