summaryrefslogtreecommitdiff
path: root/libraries/libvmime-zarafa/patches/vmime-mixed-qp-in-parameter.diff
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/libvmime-zarafa/patches/vmime-mixed-qp-in-parameter.diff')
-rw-r--r--libraries/libvmime-zarafa/patches/vmime-mixed-qp-in-parameter.diff28
1 files changed, 28 insertions, 0 deletions
diff --git a/libraries/libvmime-zarafa/patches/vmime-mixed-qp-in-parameter.diff b/libraries/libvmime-zarafa/patches/vmime-mixed-qp-in-parameter.diff
new file mode 100644
index 0000000000..78e6c70e49
--- /dev/null
+++ b/libraries/libvmime-zarafa/patches/vmime-mixed-qp-in-parameter.diff
@@ -0,0 +1,28 @@
+Index: svn/src/parameter.cpp
+===================================================================
+--- svn/src/parameter.cpp (revision 597)
++++ svn/src/parameter.cpp (working copy)
+@@ -239,8 +239,21 @@
+ {
+ value << t.getWholeBuffer();
+
+- if (!foundCharsetChunk)
+- ch = t.getWordAt(0)->getCharset();
++ if (!foundCharsetChunk) {
++ // this is still wrong. each word can have it's
++ // own charset, and can be mixed (eg. iso-8859-1
++ // and iso-2022-jp), but very unlikely.
++ // real fix is to have parameters store a
++ // vmime::text in stead of a vmime::word in
++ // m_value. but that changes the interface
++ for (size_t i = 0; i < t.getWordCount(); i++) {
++ if (t.getWordAt(i)->getCharset() != ch && ch == charsets::US_ASCII) {
++ ch = t.getWordAt(i)->getCharset();
++ break;
++ }
++ }
++
++ }
+ }
+ }
+ }