diff options
| author | Vincent Richard <[email protected]> | 2017-03-28 22:31:04 +0200 |
|---|---|---|
| committer | Vincent Richard <[email protected]> | 2017-03-28 22:31:04 +0200 |
| commit | 604b71356257a6b42e946d9022dcb1e2b056ae3b (patch) | |
| tree | ea09756eb49332202868c972eb4718a426fbb52e /src | |
| parent | Issue #167: don't build samples by default. (diff) | |
| download | vmime-604b71356257a6b42e946d9022dcb1e2b056ae3b.tar.gz vmime-604b71356257a6b42e946d9022dcb1e2b056ae3b.zip | |
Issue #168: multiple sequences of 'LF..' not replaced correctly.
Diffstat (limited to 'src')
| -rw-r--r-- | src/vmime/utility/filteredStream.cpp | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/src/vmime/utility/filteredStream.cpp b/src/vmime/utility/filteredStream.cpp index d745b384..99ba13fd 100644 --- a/src/vmime/utility/filteredStream.cpp +++ b/src/vmime/utility/filteredStream.cpp @@ -86,28 +86,17 @@ size_t dotFilteredInputStream::read(byte_t* const data, const size_t count) size_t written = 0; + byte_t prevChar2 = m_previousChar2; + byte_t prevChar1 = m_previousChar1; + // Replace "\n.." with "\n." while (readPtr < end) { - if (*readPtr == '.') + if (*readPtr == '.' && prevChar2 == '\n' && prevChar1 == '.') { - const byte_t prevChar2 = - (readPtr == data + 1 ? m_previousChar1 : - readPtr == data ? m_previousChar2 : *(readPtr - 2)); - const byte_t prevChar1 = - (readPtr == data ? m_previousChar1 : *(readPtr - 1)); - - if (prevChar2 == '\n' && prevChar1 == '.') - { - // Ignore last dot - } - else - { - *writePtr = *readPtr; - - ++writePtr; - ++written; - } + // Ignore last dot + prevChar2 = '\0'; + prevChar1 = '.'; } else { @@ -115,13 +104,16 @@ size_t dotFilteredInputStream::read(byte_t* const data, const size_t count) ++writePtr; ++written; + + prevChar2 = prevChar1; + prevChar1 = *readPtr; } ++readPtr; } - m_previousChar2 = (read >= 2 ? data[read - 2] : m_previousChar1); - m_previousChar1 = (read >= 1 ? data[read - 1] : '\0'); + m_previousChar2 = prevChar2; + m_previousChar1 = prevChar1; return (written); } |
