vmime: avoid changing SEVEN_BIT when encoding::decideImpl sees U+007F (#303)
* vmime: avoid changing SEVEN_BIT when encoding::decideImpl sees U+007F Do not switch to QP/B64 when encountering U+007F. U+007F is part of ASCII just as much as U+0001 is. --------- Co-authored-by: Vincent Richard <vincent@vincent-richard.net>
This commit is contained in:
parent
15f3b94580
commit
97d15b8cd7
@ -157,7 +157,7 @@ const encoding encoding::decideImpl(
|
||||
|
||||
const string::difference_type length = end - begin;
|
||||
const string::difference_type count = std::count_if(
|
||||
begin, end, [](unsigned char x) { return x < 127; });
|
||||
begin, end, [](unsigned char x) { return x <= 127; });
|
||||
|
||||
// All is in 7-bit US-ASCII --> 7-bit (or Quoted-Printable...)
|
||||
if (length == count) {
|
||||
|
@ -36,6 +36,7 @@ VMIME_TEST_SUITE_BEGIN(charsetTest)
|
||||
VMIME_TEST(testConvertStreamValid)
|
||||
VMIME_TEST(testConvertStreamExtract)
|
||||
VMIME_TEST(testEncodingHebrew1255)
|
||||
//VMIME_TEST(testEncodingSelectionOnASCII)
|
||||
|
||||
// IDNA
|
||||
VMIME_TEST(testEncodeIDNA)
|
||||
@ -141,6 +142,16 @@ VMIME_TEST_SUITE_BEGIN(charsetTest)
|
||||
VASSERT_EQ("1", "=?windows-1255?B?6fn3+On5+Pfp6fk=?=", encoded);
|
||||
}
|
||||
|
||||
#if 0 /* decideImpl is not public */
|
||||
void testEncodingSelectionOnASCII() {
|
||||
|
||||
const std::string a = "Hi\x01!", b = "Hi\x7f!";
|
||||
VASSERT_EQ("1", vmime::encoding::decideImpl(std::begin(a), std::end(a)),
|
||||
vmime::encoding::decideImpl(std::begin(b), std::end(b)));
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
static const vmime::string convertHelper(
|
||||
const vmime::string& in,
|
||||
const vmime::charset& csrc,
|
||||
|
Loading…
Reference in New Issue
Block a user