Merge branch 'master' of git://scm.dev.nokia.troll.no/qt/qtbase-staging

* 'master' of git://scm.dev.nokia.troll.no/qt/qtbase-staging:
  Fix inconsistency between Qt and ICU in Shift-JIS codec with regards to ASCII range
This commit is contained in:
Qt Continuous Integration System 2011-05-20 22:04:01 +10:00
commit d3b376865e
2 changed files with 18 additions and 1 deletions

View File

@ -155,7 +155,9 @@ QString QSjisCodec::convertToUnicode(const char* chars, int len, ConverterState
uchar ch = chars[i];
switch (nbuf) {
case 0:
if (ch < 0x80 || IsKana(ch)) {
if (ch < 0x80) {
result += QValidChar(ch);
} else if (IsKana(ch)) {
// JIS X 0201 Latin or JIS X 0201 Kana
u = conv->jisx0201ToUnicode(ch);
result += QValidChar(u);

View File

@ -106,6 +106,8 @@ private slots:
void moreToFromUnicode_data();
void moreToFromUnicode();
void shiftJis();
};
void tst_QTextCodec::toUnicode_data()
@ -2236,6 +2238,19 @@ void tst_QTextCodec::moreToFromUnicode()
QCOMPARE(testData, cStr);
}
void tst_QTextCodec::shiftJis()
{
QByteArray backslashTilde("\\~");
QTextCodec* codec = QTextCodec::codecForName("shift_jis");
QString string = codec->toUnicode(backslashTilde);
QCOMPARE(string.length(), 2);
QCOMPARE(string.at(0), QChar(QLatin1Char('\\')));
QCOMPARE(string.at(1), QChar(QLatin1Char('~')));
QByteArray encoded = codec->fromUnicode(string);
QCOMPARE(encoded, backslashTilde);
}
struct DontCrashAtExit {
~DontCrashAtExit() {
QTextCodec *c = QTextCodec::codecForName("utf8");