diff options
author | Parabola <dev@list.parabolagnulinux.org> | 2012-01-09 13:47:51 +0000 |
---|---|---|
committer | Parabola <dev@list.parabolagnulinux.org> | 2012-01-09 13:47:51 +0000 |
commit | 7a3611f5caa5e34c1f2b582640f97b733110ae63 (patch) | |
tree | 5b0baf1ad1b36444ffbf73707a377b15fc67692f /staging/qt3 | |
parent | 46783b68621b6ad45cdd9ed64cfa8cdcfbc6f318 (diff) |
Mon Jan 9 13:47:49 UTC 2012
Diffstat (limited to 'staging/qt3')
-rw-r--r-- | staging/qt3/PKGBUILD | 133 | ||||
-rw-r--r-- | staging/qt3/eastern_asian_languagues.diff | 39 | ||||
-rw-r--r-- | staging/qt3/gcc-4.6.patch | 33 | ||||
-rw-r--r-- | staging/qt3/mysql.patch | 47 | ||||
-rw-r--r-- | staging/qt3/qt-copy-kde-patches.tar.bz2 | bin | 31498 -> 0 bytes | |||
-rw-r--r-- | staging/qt3/qt-font-default-subst.diff | 77 | ||||
-rw-r--r-- | staging/qt3/qt-odbc.patch | 19 | ||||
-rw-r--r-- | staging/qt3/qt-patches.tar.bz2 | bin | 3708 -> 0 bytes | |||
-rw-r--r-- | staging/qt3/qt.install | 12 | ||||
-rw-r--r-- | staging/qt3/qt.profile | 4 | ||||
-rw-r--r-- | staging/qt3/qt3-png14.patch | 33 | ||||
-rw-r--r-- | staging/qt3/utf8-bug-qt3.diff | 101 |
12 files changed, 0 insertions, 498 deletions
diff --git a/staging/qt3/PKGBUILD b/staging/qt3/PKGBUILD deleted file mode 100644 index a10f5f15f..000000000 --- a/staging/qt3/PKGBUILD +++ /dev/null @@ -1,133 +0,0 @@ -# $Id: PKGBUILD 145099 2011-12-17 01:36:17Z eric $ -# Maintainer: Eric BĂ©langer <eric@archlinux.org> - -pkgname=qt3 -pkgver=3.3.8 -pkgrel=21 -pkgdesc="The QT3 gui toolkit" -arch=('i686' 'x86_64') -url="http://www.trolltech.com/products/qt/index.html" -license=('GPL') -depends=('libpng' 'libxmu' 'libxcursor' 'libxinerama' 'mesa' 'libxft' - 'libxrandr' 'libmng') -makedepends=('mysql' 'postgresql' 'unixodbc' 'sqlite3') -optdepends=('libmysqlclient' 'postgresql-libs' 'unixodbc') -options=('!libtool') -install=qt.install -source=(ftp://ftp.trolltech.com/qt/source/qt-x11-free-${pkgver}.tar.bz2 - qt.profile qt3-png14.patch qt-copy-kde-patches.tar.bz2 - qt-patches.tar.bz2 utf8-bug-qt3.diff qt-font-default-subst.diff - mysql.patch eastern_asian_languagues.diff qt-odbc.patch gcc-4.6.patch) -sha1sums=('91b192cb8e80679607d24ae35d6e20ed68d149d7' - 'd2e257a9011208b2cb81b9cf47915b9a2f9dab83' - 'c8ea644266f4d6d6be9adf894f03138b8eca3fc2' - '9cb2e5bec782069692ee337cfa171539d9d73753' - '116afa0e737bdf27ea27f9b3653aeb56db9ec151' - 'ca5ecb29c7f1c826d48703339a3371038e306bb7' - 'd928ff55adb52c4bab2fb268df022651551cd70c' - 'bb6aad81cce143c23ff7840b1d79f6b2007a0c04' - '40c7b8f06a21f809ddeb8b5560e9da63ccac6a17' - '1346320614f6f86fbeb10b9fbad721dea29f5b61' - 'd9b83b8f6f9c8bd98d290dc1d0e9913a00b62c3f') - -# qt-copy-kde-patches come from http://websvn.kde.org/trunk/qt-copy/patches/ -# other qt-patches come from fedora and gentoo - -build() { - unset QMAKESPEC - export QTDIR="${srcdir}"/qt-x11-free-${pkgver} - export PATH=${QTDIR}/bin:${PATH} - export LD_LIBRARY_PATH=${QTDIR}/lib:${LD_LIBRARY_PATH} - export QMAKESPEC=$QTDIR/mkspecs/linux-g++ - cd "${srcdir}"/qt-x11-free-${pkgver} - # apply qt patches from kde.org - for i in ../qt-copy-kde-patches/*; do - patch -Np0 -i $i - done - # apply other qt patches and one security fix from debian/gentoo - for i in ../qt-patches/*; do - patch -Np1 -i $i - done - # fix utf8 bug - patch -p0 -i "${srcdir}"/utf8-bug-qt3.diff - # fix asia fonts - patch -p0 -i "${srcdir}"/qt-font-default-subst.diff - # fix segfaults on exit when using mysql DB driver - patch -p0 -i "${srcdir}"/mysql.patch - # fix CJK font/chars select error (FS#11245) - patch -p1 -i "${srcdir}"/eastern_asian_languagues.diff - # fix build problem against new unixODBC - patch -p1 -i "${srcdir}"/qt-odbc.patch - # fix build with gcc 4.6.0 - patch -p1 -i "${srcdir}"/gcc-4.6.patch - - patch -p0 -i "${srcdir}"/qt3-png14.patch - # start compiling qt - sed -i 's|-cp -P -f|-cp -L -f|' qmake/Makefile.unix - rm -rf doc/html examples tutorial - sed -i "s|sub-tutorial sub-examples||" Makefile - sed -i "s|-O2|$CXXFLAGS|" mkspecs/linux-g++/qmake.conf - sed -i "s|-O2|$CXXFLAGS|" mkspecs/linux-g++-32/qmake.conf - sed -i "s|-O2|$CXXFLAGS|" mkspecs/linux-g++-64/qmake.conf - sed -i "s|-I. |$CXXFLAGS -I. |" qmake/Makefile.unix - sed -i "s|read acceptance|acceptance=yes|" configure - - # remove unwanted mkspecs - rm -rf mkspecs/{*aix*,*bsd*,cygwin*,dgux*,darwin*,hpux*,hurd*,irix*,lynxos*,macx*,qnx*,reliant*,sco*,solaris*,tru64*,unixware*,win32*} - - if [ "$CARCH" = "x86_64" ]; then - export ARCH="-64" - else unset ARCH - fi - - ./configure -prefix /opt/qt \ - -platform linux-g++$ARCH \ - -system-zlib \ - -qt-gif \ - -release \ - -shared \ - -sm \ - -nis \ - -thread \ - -stl \ - -system-lib{png,jpeg,mng} \ - -no-g++-exceptions \ - -plugin-sql-{mysql,psql,sqlite,odbc} - - # fix /opt/qt/lib path - [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" "${srcdir}"/qt-x11-free-${pkgver}/src/Makefile - [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" "${srcdir}"/qt-x11-free-${pkgver}/tools/designer/designer/Makefile - [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" "${srcdir}"/qt-x11-free-${pkgver}/tools/designer/editor/Makefile - [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" "${srcdir}"/qt-x11-free-${pkgver}/tools/assistant/lib/Makefile - [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" "${srcdir}"/qt-x11-free-${pkgver}/tools/designer/uilib/Makefile - - cd "${srcdir}"/qt-x11-free-${pkgver} - make -C qmake - cd "${srcdir}"/qt-x11-free-${pkgver}/plugins/src/sqldrivers/mysql - "${srcdir}"/qt-x11-free-${pkgver}/bin/qmake -o Makefile "INCPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient" mysql.pro - cd "${srcdir}"/qt-x11-free-${pkgver}/plugins/src/sqldrivers/psql - "${srcdir}"/qt-x11-free-${pkgver}/bin/qmake -o Makefile "INCPATH+=/usr/src/include /usr/include/postgresql/server" "LIBS+=-L/usr/lib -lpq" psql.pro - - cd "${srcdir}"/qt-x11-free-${pkgver} - # fix the broken makefiles - #sed -i 's|[[:space:]]*strip.*doc/html.*$|#|g' src/Makefile - make -} - -package() { - cd "${srcdir}"/qt-x11-free-${pkgver} - make INSTALL_ROOT="${pkgdir}" install - rm -rf "${pkgdir}"/opt/qt/{phrasebooks,templates,translations} - sed -i "s|-L${srcdir}/qt-x11-free-${pkgver}/lib ||g" "${pkgdir}"/opt/qt/lib/*.prl - install -D -m755 qmake/qmake "${pkgdir}"/opt/qt/bin/qmake - install -D -m755 "${srcdir}"/qt.profile "${pkgdir}"/etc/profile.d/qt3.sh - ln -sf /opt/qt/bin/qtconfig "${pkgdir}"/opt/qt/bin/qt3config - rm -f "${pkgdir}"/opt/qt/mkspecs/linux-g++$ARCH/linux-g++$ARCH - - # install man pages - install -d -m755 "${pkgdir}"/opt/qt/man - cp -r "${srcdir}"/qt-x11-free-${pkgver}/doc/man/{man1,man3} "${pkgdir}"/opt/qt/man/ - - install -d -m755 "${pkgdir}"/etc/ld.so.conf.d/ - echo '/opt/qt/lib' > "${pkgdir}"/etc/ld.so.conf.d/qt3.conf -} diff --git a/staging/qt3/eastern_asian_languagues.diff b/staging/qt3/eastern_asian_languagues.diff deleted file mode 100644 index 7c25eef7d..000000000 --- a/staging/qt3/eastern_asian_languagues.diff +++ /dev/null @@ -1,39 +0,0 @@ ---- qt-x11-free-3.3.8b/src/kernel/qfontdatabase.cpp 2008-01-15 21:09:13.000000000 +0200 -+++ qt-x11-free-3.3.8b/src/kernel/qfontdatabase.cpp 2008-03-10 11:34:22.000000000 +0200 -@@ -966,20 +966,22 @@ - - #ifdef Q_WS_X11 - if (script == QFont::Han) { -- // modify script according to locale -- static QFont::Script defaultHan = QFont::UnknownScript; -- if (defaultHan == QFont::UnknownScript) { -- QCString locale = setlocale(LC_ALL, NULL); -- if (locale.contains("ko")) -- defaultHan = QFont::Han_Korean; -- else if (locale.contains("zh_TW") || locale.contains("zh_HK")) -- defaultHan = QFont::Han_TraditionalChinese; -- else if (locale.contains("zh")) -- defaultHan = QFont::Han_SimplifiedChinese; -- else -- defaultHan = QFont::Han_Japanese; -- } -- script = defaultHan; -+ // modify script according to locale -+ static QFont::Script defaultHan; -+ QCString locale = setlocale(LC_ALL, NULL); -+ -+ if (locale.contains("ko")) -+ defaultHan = QFont::Han_Korean; -+ else if (locale.contains("zh_TW") || locale.contains("zh_HK")) -+ defaultHan = QFont::Han_TraditionalChinese; -+ else if (locale.contains("zh")) -+ defaultHan = QFont::Han_SimplifiedChinese; -+ else if (locale.contains("ja")) -+ defaultHan = QFont::Han_Japanese; -+ else -+ defaultHan = QFont::Han; // don't change -+ -+ script = defaultHan; - } - #endif - diff --git a/staging/qt3/gcc-4.6.patch b/staging/qt3/gcc-4.6.patch deleted file mode 100644 index bcbffcea6..000000000 --- a/staging/qt3/gcc-4.6.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff -up qt-x11-free-3.3.8b/src/tools/qmap.h.cstddef qt-x11-free-3.3.8b/src/tools/qmap.h ---- qt-x11-free-3.3.8b/src/tools/qmap.h.cstddef 2008-01-15 13:09:13.000000000 -0600 -+++ qt-x11-free-3.3.8b/src/tools/qmap.h 2011-01-30 21:14:29.275088725 -0600 -@@ -49,6 +49,7 @@ - #include "qvaluelist.h" - #endif // QT_H - -+#include <cstddef> - #ifndef QT_NO_STL - #include <iterator> - #include <map> -diff -up qt-x11-free-3.3.8b/src/tools/qvaluelist.h.cstddef qt-x11-free-3.3.8b/src/tools/qvaluelist.h ---- qt-x11-free-3.3.8b/src/tools/qvaluelist.h.cstddef 2008-01-15 13:09:13.000000000 -0600 -+++ qt-x11-free-3.3.8b/src/tools/qvaluelist.h 2011-01-30 21:14:01.765846592 -0600 -@@ -47,6 +47,7 @@ - #include "qdatastream.h" - #endif // QT_H - -+#include <cstddef> - #ifndef QT_NO_STL - #include <iterator> - #include <list> -diff -up qt-x11-free-3.3.8b/src/tools/qvaluevector.h.cstddef qt-x11-free-3.3.8b/src/tools/qvaluevector.h ---- qt-x11-free-3.3.8b/src/tools/qvaluevector.h.cstddef 2008-01-15 13:09:13.000000000 -0600 -+++ qt-x11-free-3.3.8b/src/tools/qvaluevector.h 2011-01-30 21:14:01.765846592 -0600 -@@ -45,6 +45,7 @@ - #include "qdatastream.h" - #endif // QT_H - -+#include <cstddef> - #ifndef QT_NO_STL - #include <vector> - #endif diff --git a/staging/qt3/mysql.patch b/staging/qt3/mysql.patch deleted file mode 100644 index 5f61edc67..000000000 --- a/staging/qt3/mysql.patch +++ /dev/null @@ -1,47 +0,0 @@ ---- src/sql/drivers/mysql/qsql_mysql.cpp -+++ src/sql/drivers/mysql/qsql_mysql.cpp -@@ -37,7 +37,6 @@ - #include "qsql_mysql.h" - #include <private/qsqlextension_p.h> - --#include <qapplication.h> - #include <qdatetime.h> - #include <qvaluevector.h> - #include <qsqlrecord.h> -@@ -341,14 +340,6 @@ int QMYSQLResult::numRowsAffected() - } - - ///////////////////////////////////////////////////////// --static void qServerEnd() --{ --#ifndef Q_NO_MYSQL_EMBEDDED --# if MYSQL_VERSION_ID >= 40000 -- mysql_server_end(); --# endif // MYSQL_VERSION_ID --#endif // Q_NO_MYSQL_EMBEDDED --} - - static void qServerInit() - { -@@ -366,9 +357,7 @@ static void qServerInit() - qWarning( "QMYSQLDriver::qServerInit: unable to start server." ); - # endif - } -- qAddPostRoutine(qServerEnd); - init = TRUE; -- - # endif // MYSQL_VERSION_ID - #endif // Q_NO_MYSQL_EMBEDDED - } -@@ -411,6 +400,11 @@ QMYSQLDriver::~QMYSQLDriver() - QSqlOpenExtension *ext = qSqlOpenExtDict()->take( this ); - delete ext; - } -+#ifndef Q_NO_MYSQL_EMBEDDED -+# if MYSQL_VERSION_ID > 40000 -+ mysql_server_end(); -+# endif -+#endif - } - - bool QMYSQLDriver::hasFeature( DriverFeature f ) const diff --git a/staging/qt3/qt-copy-kde-patches.tar.bz2 b/staging/qt3/qt-copy-kde-patches.tar.bz2 Binary files differdeleted file mode 100644 index 19d899963..000000000 --- a/staging/qt3/qt-copy-kde-patches.tar.bz2 +++ /dev/null diff --git a/staging/qt3/qt-font-default-subst.diff b/staging/qt3/qt-font-default-subst.diff deleted file mode 100644 index 3e286f74e..000000000 --- a/staging/qt3/qt-font-default-subst.diff +++ /dev/null @@ -1,77 +0,0 @@ ---- src/kernel/qfontdatabase_x11.cpp -+++ src/kernel/qfontdatabase_x11.cpp -@@ -1589,15 +1589,6 @@ QFontEngine *loadEngine( QFont::Script s - if (script == QFont::Latin) - // add Euro character - FcCharSetAddChar(cs, 0x20ac); -- if (script == QFont::Han_SimplifiedChinese) -- FcCharSetAddChar(cs, 0x3400); -- if (script == QFont::Han_TraditionalChinese){ -- FcCharSetAddChar(cs, 0x3435); -- FcCharSetAddChar(cs, 0xE000); -- FcCharSetAddChar(cs, 0xF6B1); -- } -- if (script == QFont::MiscellaneousSymbols) -- FcCharSetAddChar(cs, 0x2714); - FcPatternAddCharSet(pattern, FC_CHARSET, cs); - FcCharSetDestroy(cs); - } -@@ -1813,7 +1804,11 @@ static QFontEngine *loadFontConfigFont(c - FcPatternPrint(pattern); - #endif - -+ // XftFontMatch calls the right ConfigSubstitute variants, but as we use -+ // FcFontMatch/Sort here we have to do it manually. - FcConfigSubstitute(0, pattern, FcMatchPattern); -+ XftDefaultSubstitute(QPaintDevice::x11AppDisplay(), QPaintDevice::x11AppScreen(), pattern); -+ - // qDebug("1: pattern contains:"); - // FcPatternPrint(pattern); - -@@ -1847,10 +1842,6 @@ static QFontEngine *loadFontConfigFont(c - value.u.s = (const FcChar8 *)cs.data(); - FcPatternAddWeak(pattern, FC_FAMILY, value, FcTrue); - } --#ifdef FONT_MATCH_DEBUG -- printf("final pattern contains:\n"); -- FcPatternPrint(pattern); --#endif - } - - if (script != QFont::Unicode) { -@@ -1860,19 +1851,15 @@ static QFontEngine *loadFontConfigFont(c - if (script == QFont::Latin) - // add Euro character - FcCharSetAddChar(cs, 0x20ac); -- if (script == QFont::Han_SimplifiedChinese) -- FcCharSetAddChar(cs, 0x3400); -- if (script == QFont::Han_TraditionalChinese) { -- FcCharSetAddChar(cs, 0x3435); -- FcCharSetAddChar(cs, 0xE000); -- FcCharSetAddChar(cs, 0xF6B1); -- } -- if (script == QFont::MiscellaneousSymbols) -- FcCharSetAddChar(cs, 0x2714); - FcPatternAddCharSet(pattern, FC_CHARSET, cs); - FcCharSetDestroy(cs); - } - -+#ifdef FONT_MATCH_DEBUG -+ printf("final pattern contains:\n"); -+ FcPatternPrint(pattern); -+#endif -+ - QFontEngine *fe = 0; - - for( int jj = (FcGetVersion() >= 20392 ? 0 : 1); jj < 2; ++jj ) { ---- src/kernel/qfontdatabase.cpp -+++ src/kernel/qfontdatabase.cpp -@@ -554,7 +554,7 @@ static const unsigned short sample_chars - // GeometricSymbols, - { 0x2500, 0x0 }, - // MiscellaneousSymbols, -- { 0x2640, 0x0 }, -+ { 0x2640, 0x2714, 0x0 }, - // EnclosedAndSquare, - { 0x2460, 0x0 }, - // Braille, diff --git a/staging/qt3/qt-odbc.patch b/staging/qt3/qt-odbc.patch deleted file mode 100644 index 6f21e3cf1..000000000 --- a/staging/qt3/qt-odbc.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -up qt-x11-free-3.3.8/src/sql/drivers/odbc/qsql_odbc.cpp.orig qt-x11-free-3.3.8/src/sql/drivers/odbc/qsql_odbc.cpp ---- qt-x11-free-3.3.8/src/sql/drivers/odbc/qsql_odbc.cpp.orig 2009-02-24 11:32:27.000000000 +0100 -+++ qt-x11-free-3.3.8/src/sql/drivers/odbc/qsql_odbc.cpp 2009-02-24 11:33:43.000000000 +0100 -@@ -57,13 +57,13 @@ - #endif - - // newer platform SDKs use SQLLEN instead of SQLINTEGER --#ifdef SQLLEN -+#if defined(SQLLEN) || defined(Q_OS_WIN64) || defined(Q_OS_UNIX) - # define QSQLLEN SQLLEN - #else - # define QSQLLEN SQLINTEGER - #endif - --#ifdef SQLULEN -+#if defined(SQLULEN) || defined(Q_OS_WIN64) || defined(Q_OS_UNIX) - # define QSQLULEN SQLULEN - #else - # define QSQLULEN SQLUINTEGER diff --git a/staging/qt3/qt-patches.tar.bz2 b/staging/qt3/qt-patches.tar.bz2 Binary files differdeleted file mode 100644 index 3f4aee171..000000000 --- a/staging/qt3/qt-patches.tar.bz2 +++ /dev/null diff --git a/staging/qt3/qt.install b/staging/qt3/qt.install deleted file mode 100644 index 6d042daae..000000000 --- a/staging/qt3/qt.install +++ /dev/null @@ -1,12 +0,0 @@ -post_install() { - post_remove -} - -post_upgrade() { - post_remove -} - -post_remove() { - # this can be removed in future versions - sed -e '/\/opt\/qt\/lib/d' -i etc/ld.so.conf -} diff --git a/staging/qt3/qt.profile b/staging/qt3/qt.profile deleted file mode 100644 index ed4d232ae..000000000 --- a/staging/qt3/qt.profile +++ /dev/null @@ -1,4 +0,0 @@ -export QTDIR=/opt/qt -export QT_XFT=true -export PATH=$PATH:$QTDIR/bin -export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/qt/lib/pkgconfig diff --git a/staging/qt3/qt3-png14.patch b/staging/qt3/qt3-png14.patch deleted file mode 100644 index e8a194529..000000000 --- a/staging/qt3/qt3-png14.patch +++ /dev/null @@ -1,33 +0,0 @@ ---- src/kernel/qpngio.cpp.orig 2010-01-16 22:02:41.000000000 +0100 -+++ src/kernel/qpngio.cpp 2010-01-16 22:03:56.000000000 +0100 -@@ -159,7 +159,7 @@ - image.setColor( i, qRgba(c,c,c,0xff) ); - } - if ( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ) { -- const int g = info_ptr->trans_values.gray; -+ const int g = info_ptr->trans_color.gray; - if (g < ncols) { - image.setAlphaBuffer(TRUE); - image.setColor(g, image.color(g) & RGB_MASK); -@@ -187,7 +187,7 @@ - info_ptr->palette[i].red, - info_ptr->palette[i].green, - info_ptr->palette[i].blue, -- info_ptr->trans[i] -+ info_ptr->trans_alpha[i] - ) - ); - i++; -@@ -321,9 +321,9 @@ - png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) - if (image.depth()==32 && png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) { - QRgb trans = 0xFF000000 | qRgb( -- (info_ptr->trans_values.red << 8 >> bit_depth)&0xff, -- (info_ptr->trans_values.green << 8 >> bit_depth)&0xff, -- (info_ptr->trans_values.blue << 8 >> bit_depth)&0xff); -+ (info_ptr->trans_color.red << 8 >> bit_depth)&0xff, -+ (info_ptr->trans_color.green << 8 >> bit_depth)&0xff, -+ (info_ptr->trans_color.blue << 8 >> bit_depth)&0xff); - for (uint y=0; y<height; y++) { - for (uint x=0; x<info_ptr->width; x++) { - if (((uint**)jt)[y][x] == trans) { diff --git a/staging/qt3/utf8-bug-qt3.diff b/staging/qt3/utf8-bug-qt3.diff deleted file mode 100644 index 43e84a99f..000000000 --- a/staging/qt3/utf8-bug-qt3.diff +++ /dev/null @@ -1,101 +0,0 @@ ---- src/codecs/qutfcodec.cpp -+++ src/codecs/qutfcodec.cpp -@@ -154,6 +154,7 @@ - - class QUtf8Decoder : public QTextDecoder { - uint uc; -+ uint min_uc; - int need; - bool headerDone; - public: -@@ -167,8 +168,9 @@ - result.setLength( len ); // worst case - QChar *qch = (QChar *)result.unicode(); - uchar ch; -+ int error = -1; - for (int i=0; i<len; i++) { -- ch = *chars++; -+ ch = chars[i]; - if (need) { - if ( (ch&0xc0) == 0x80 ) { - uc = (uc << 6) | (ch & 0x3f); -@@ -182,6 +184,8 @@ - *qch++ = QChar(high); - *qch++ = QChar(low); - headerDone = TRUE; -+ } else if ((uc < min_uc) || (uc >= 0xd800 && uc <= 0xdfff) || (uc >= 0xfffe)) { -+ *qch++ = QChar::replacement; - } else { - if (headerDone || QChar(uc) != QChar::byteOrderMark) - *qch++ = uc; -@@ -190,6 +194,7 @@ - } - } else { - // error -+ i = error; - *qch++ = QChar::replacement; - need = 0; - } -@@ -200,12 +205,21 @@ - } else if ((ch & 0xe0) == 0xc0) { - uc = ch & 0x1f; - need = 1; -+ error = i; -+ min_uc = 0x80; - } else if ((ch & 0xf0) == 0xe0) { - uc = ch & 0x0f; - need = 2; -+ error = i; -+ min_uc = 0x800; - } else if ((ch&0xf8) == 0xf0) { - uc = ch & 0x07; - need = 3; -+ error = i; -+ min_uc = 0x10000; -+ } else { -+ // error -+ *qch++ = QChar::replacement; - } - } - } ---- src/tools/qstring.cpp -+++ src/tools/qstring.cpp -@@ -5805,6 +5805,7 @@ - result.setLength( len ); // worst case - QChar *qch = (QChar *)result.unicode(); - uint uc = 0; -+ uint min_uc = 0; - int need = 0; - int error = -1; - uchar ch; -@@ -5822,6 +5823,12 @@ - unsigned short low = uc%0x400 + 0xdc00; - *qch++ = QChar(high); - *qch++ = QChar(low); -+ } else if (uc < min_uc || (uc >= 0xd800 && uc <= 0xdfff) || (uc >= 0xfffe)) { -+ // overlong seqence, UTF16 surrogate or BOM -+ i = error; -+ qch = addOne(qch, result); -+ *qch++ = QChar(0xdbff); -+ *qch++ = QChar(0xde00+((uchar)utf8[i])); - } else { - *qch++ = uc; - } -@@ -5844,14 +5851,17 @@ - uc = ch & 0x1f; - need = 1; - error = i; -+ min_uc = 0x80; - } else if ((ch & 0xf0) == 0xe0) { - uc = ch & 0x0f; - need = 2; - error = i; -+ min_uc = 0x800; - } else if ((ch&0xf8) == 0xf0) { - uc = ch & 0x07; - need = 3; - error = i; -+ min_uc = 0x10000; - } else { - // Error - qch = addOne(qch, result); |