From 0cd9ac9d14deef4982c220e7812f66455553d86e Mon Sep 17 00:00:00 2001 From: Masatoshi Kimura Date: Sat, 11 Oct 2008 02:52:24 +0200 Subject: [PATCH] Bug 457886 - Cannot send ISO-2022-JP email on Tb trunk; r=smontagu sr=bienvenu --- intl/uconv/tests/unit/test_bug457886.js | 20 ++++++++++++++++++++ intl/uconv/util/nsUnicodeEncodeHelper.cpp | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 intl/uconv/tests/unit/test_bug457886.js diff --git a/intl/uconv/tests/unit/test_bug457886.js b/intl/uconv/tests/unit/test_bug457886.js new file mode 100644 index 00000000000..5c5a547015a --- /dev/null +++ b/intl/uconv/tests/unit/test_bug457886.js @@ -0,0 +1,20 @@ +// Tests conversion from Unicode to ISO-2022-JP + +const inString = "\u3042\u3044\u3046\u3048\u304A\u000D\u000A\u304B\u304D\u304F\u3051\u3053"; + +const expectedString = "\x1B$B$\"$$$&$($*\x1B(B\x0D\x0A\x1B$B$+$-$/$1$3\x1B(B"; + +const charset = "ISO-2022-JP"; + +function run_test() +{ + var ScriptableUnicodeConverter = + Components.Constructor("@mozilla.org/intl/scriptableunicodeconverter", + "nsIScriptableUnicodeConverter"); + + var converter = new ScriptableUnicodeConverter(); + converter.charset = charset; + + var outString = converter.ConvertFromUnicode(inString) + converter.Finish(); + do_check_eq(outString, expectedString); +} diff --git a/intl/uconv/util/nsUnicodeEncodeHelper.cpp b/intl/uconv/util/nsUnicodeEncodeHelper.cpp index c31762a2015..c5040b6cb51 100644 --- a/intl/uconv/util/nsUnicodeEncodeHelper.cpp +++ b/intl/uconv/util/nsUnicodeEncodeHelper.cpp @@ -62,7 +62,7 @@ nsresult nsUnicodeEncodeHelper::ConvertByTable( while (src < srcEnd) { if (!uMapCode((uTable*) aMappingTable, static_cast(*(src++)), reinterpret_cast(&med))) { - if (*(src - 1) < 0x20) { + if (aScanClass == u1ByteCharset && *(src - 1) < 0x20) { // some tables are missing the 0x00 - 0x20 part med = *(src - 1); } else {