diff options
author | Vincent Richard <[email protected]> | 2015-02-16 18:42:46 +0000 |
---|---|---|
committer | Vincent Richard <[email protected]> | 2015-02-16 18:42:46 +0000 |
commit | 28233060d4061b9bda791ee327931886509ea52e (patch) | |
tree | cf3c7b91ada0ba5aa8142e0fc153929df68d4641 | |
parent | Issue #103: fix badly encoded words. (diff) | |
download | vmime-28233060d4061b9bda791ee327931886509ea52e.tar.gz vmime-28233060d4061b9bda791ee327931886509ea52e.zip |
Skip word on unexpected error when fixing broken words.
-rw-r--r-- | src/vmime/text.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/vmime/text.cpp b/src/vmime/text.cpp index f506f660..930a9866 100644 --- a/src/vmime/text.cpp +++ b/src/vmime/text.cpp @@ -423,7 +423,17 @@ void text::fixBrokenWords(std::vector <shared_ptr <word> >& words) shared_ptr <word> w2 = words[i + 1]; // Check whether the word is valid - bool valid = w1->getCharset().isValidText(w1->getBuffer(), NULL); + bool valid = false; + + try + { + w1->getCharset().isValidText(w1->getBuffer(), NULL); + } + catch (vmime::exceptions::charset_conv_error& e) + { + // Unknown charset or unexpected conversion error: assume word is valid + valid = true; + } // If the current word is not valid, try to grab some bytes // from the next word, to see whether it becomes valid. |