aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vmime/text.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/vmime/text.cpp b/src/vmime/text.cpp
index f506f660..0722be02 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
+ {
+ valid = 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.