diff options
author | Sergio Ahumada <sergio.ahumada@digia.com> | 2013-03-20 23:30:31 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-03-20 23:30:31 +0100 |
commit | e5a11fbb3251a98fafd6bebf0b6fc366acb19088 (patch) | |
tree | 8e1bd6704205307e0a23484221ea1bb67a9f411e /src/corelib/codecs | |
parent | 0646d1131b4bc65cdd9af29f4ce00fdd2398a3df (diff) | |
parent | 76c0be34cd4ff4564693162fa7528463e23ce9d8 (diff) |
Merge "Merge branch 'dev' into stable" into refs/staging/stable
Diffstat (limited to 'src/corelib/codecs')
-rw-r--r-- | src/corelib/codecs/qeuckrcodec.cpp | 4 | ||||
-rw-r--r-- | src/corelib/codecs/qiconvcodec.cpp | 2 | ||||
-rw-r--r-- | src/corelib/codecs/qicucodec.cpp | 3 | ||||
-rw-r--r-- | src/corelib/codecs/qjpunicode.cpp | 6 | ||||
-rw-r--r-- | src/corelib/codecs/qtextcodec.cpp | 34 | ||||
-rw-r--r-- | src/corelib/codecs/qtextcodec.h | 4 | ||||
-rw-r--r-- | src/corelib/codecs/qtextcodec_p.h | 2 |
7 files changed, 27 insertions, 28 deletions
diff --git a/src/corelib/codecs/qeuckrcodec.cpp b/src/corelib/codecs/qeuckrcodec.cpp index a6d75666d5..20ba1e85d6 100644 --- a/src/corelib/codecs/qeuckrcodec.cpp +++ b/src/corelib/codecs/qeuckrcodec.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -// Most of the cp949 code was originally written by Joon-Kyu Park, and is included +// Most of the cp949 code was originally written by Joon-Kyu Park, and is included // in Qt with the author's permission and the grateful thanks of the Qt team. /*! \class QEucKrCodec @@ -3405,7 +3405,7 @@ QByteArray QCP949Codec::convertFromUnicode(const QChar *uc, int len, ConverterSt row = internal_code / 178; column = internal_code % 178; } - else { + else { // code between a1-fe internal_code -= 3008; row = internal_code / 84; diff --git a/src/corelib/codecs/qiconvcodec.cpp b/src/corelib/codecs/qiconvcodec.cpp index 01b90fe527..60b13ac4e1 100644 --- a/src/corelib/codecs/qiconvcodec.cpp +++ b/src/corelib/codecs/qiconvcodec.cpp @@ -374,7 +374,7 @@ QByteArray QIconvCodec::convertFromUnicode(const QChar *uc, int len, ConverterSt delete temporaryState; return QString(uc, len).toLatin1(); } - + size_t outBytesLeft = len; QByteArray ba(outBytesLeft, Qt::Uninitialized); outBytes = ba.data(); diff --git a/src/corelib/codecs/qicucodec.cpp b/src/corelib/codecs/qicucodec.cpp index 000f6872b5..9afae8c0ee 100644 --- a/src/corelib/codecs/qicucodec.cpp +++ b/src/corelib/codecs/qicucodec.cpp @@ -457,7 +457,8 @@ QTextCodec *QIcuCodec::codecForNameUnlocked(const char *name) if (!qstrcmp(name, "windows-874-2000") || !qstrcmp(name, "windows-874") || !qstrcmp(name, "MS874") - || !qstrcmp(name, "x-windows-874")) + || !qstrcmp(name, "x-windows-874") + || !qstrcmp(name, "ISO 8859-11")) name = "TIS-620"; UErrorCode error = U_ZERO_ERROR; diff --git a/src/corelib/codecs/qjpunicode.cpp b/src/corelib/codecs/qjpunicode.cpp index 95ffe11f75..9513621dfe 100644 --- a/src/corelib/codecs/qjpunicode.cpp +++ b/src/corelib/codecs/qjpunicode.cpp @@ -10537,7 +10537,7 @@ static unsigned short const sjis208ibmvdc_unicode[] = { uint QJpUnicodeConv::sjisibmvdcToUnicode(uint h, uint l) const { - if (((rule & IBM_VDC) || (rule & Microsoft_CP932)) && IsSjisIBMVDCChar1(h)) + if (((rule & IBM_VDC) || (rule & Microsoft_CP932)) && IsSjisIBMVDCChar1(h)) return sjis208ibmvdc_unicode[((h - 0x00fa)*189 + (l-0x0040))]; else return 0; @@ -10632,9 +10632,9 @@ static unsigned short const cp932_ed_ee_unicode[] = { uint QJpUnicodeConv::cp932ToUnicode(uint h, uint l) const { if (rule & Microsoft_CP932) { - if (h == 0x0087 && (l >= 0x0040 && l <= 0x009c)) + if (h == 0x0087 && (l >= 0x0040 && l <= 0x009c)) return cp932_87_unicode[l-0x0040]; - else if ((h == 0x00ed || h == 0x00ee) && (l >= 0x0040 && l <= 0x00fc)) + else if ((h == 0x00ed || h == 0x00ee) && (l >= 0x0040 && l <= 0x00fc)) return cp932_ed_ee_unicode[((h - 0x00ed)*189 + (l-0x0040))]; } return 0; diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp index 0e671518ef..1a5c9f6766 100644 --- a/src/corelib/codecs/qtextcodec.cpp +++ b/src/corelib/codecs/qtextcodec.cpp @@ -89,7 +89,7 @@ #include <stdlib.h> #include <ctype.h> #include <locale.h> -#if defined (_XOPEN_UNIX) && !defined(Q_OS_QNX) && !defined(Q_OS_OSF) && !defined(Q_OS_LINUX_ANDROID) +#if defined (_XOPEN_UNIX) && !defined(Q_OS_QNX) && !defined(Q_OS_OSF) && !defined(Q_OS_ANDROID) # include <langinfo.h> #endif @@ -1043,28 +1043,30 @@ QString QTextDecoder::toUnicode(const QByteArray &ba) QTextCodec *QTextCodec::codecForHtml(const QByteArray &ba, QTextCodec *defaultCodec) { // determine charset - int pos; - QTextCodec *c = 0; - - c = QTextCodec::codecForUtfText(ba, c); + QTextCodec *c = QTextCodec::codecForUtfText(ba, 0); if (!c) { QByteArray header = ba.left(512).toLower(); - if ((pos = header.indexOf("http-equiv=")) != -1) { - if ((pos = header.lastIndexOf("meta ", pos)) != -1) { - pos = header.indexOf("charset=", pos) + int(strlen("charset=")); - if (pos != -1) { - int pos2 = header.indexOf('\"', pos+1); - QByteArray cs = header.mid(pos, pos2-pos); - // qDebug("found charset: %s", cs.data()); - c = QTextCodec::codecForName(cs); + int pos = header.indexOf("meta "); + if (pos != -1) { + pos = header.indexOf("charset=", pos); + if (pos != -1) { + pos += qstrlen("charset="); + + int pos2 = pos; + // The attribute can be closed with either """, "'", ">" or "/", + // none of which are valid charset characters. + while (++pos2 < header.size()) { + char ch = header.at(pos2); + if (ch == '\"' || ch == '\'' || ch == '>') { + c = QTextCodec::codecForName(header.mid(pos, pos2 - pos)); + return c ? c : defaultCodec; + } } } } } - if (!c) - c = defaultCodec; - return c; + return defaultCodec; } /*! diff --git a/src/corelib/codecs/qtextcodec.h b/src/corelib/codecs/qtextcodec.h index ac0bc77ea5..35ff83a27a 100644 --- a/src/corelib/codecs/qtextcodec.h +++ b/src/corelib/codecs/qtextcodec.h @@ -45,8 +45,6 @@ #include <QtCore/qstring.h> #include <QtCore/qlist.h> -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -166,6 +164,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEXTCODEC_H diff --git a/src/corelib/codecs/qtextcodec_p.h b/src/corelib/codecs/qtextcodec_p.h index 18629f4bf3..0fec1e80c7 100644 --- a/src/corelib/codecs/qtextcodec_p.h +++ b/src/corelib/codecs/qtextcodec_p.h @@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE #ifndef QT_NO_TEXTCODEC -#if defined(Q_OS_MAC) || defined(Q_OS_IOS) || defined(Q_OS_LINUX_ANDROID) || defined(Q_OS_QNX) +#if defined(Q_OS_MAC) || defined(Q_OS_IOS) || defined(Q_OS_ANDROID) || defined(Q_OS_QNX) #define QT_LOCALE_IS_UTF8 #endif |