[arch-commits] CVS update of extra/lib/qt (10 files)

Pierre Schmitz pierre at archlinux.org
Thu Nov 22 20:11:11 UTC 2007


    Date: Thursday, November 22, 2007 @ 15:11:11
  Author: pierre
    Path: /home/cvs-extra/extra/lib/qt

Modified: PKGBUILD (1.32 -> 1.33) qt-copy-kde-patches.tar.bz2 (1.13 -> 1.14)
 Removed: mysql.patch (1.1) qlistview.patch (1.1)
          qt-font-default-subst.diff (1.1) qt-patches.tar.bz2 (1.5)
          qt.install (1.2) qt.profile (1.1) qt3_pixmap.patch (1.1)
          utf8-bug-qt3.diff (1.1)

upgpkg: qt 4.3.2-3
cleanup and implemented #8709


-----------------------------+
 PKGBUILD                    |   35 +++-------
 mysql.patch                 |   47 --------------
 qlistview.patch             |   14 ----
 qt-copy-kde-patches.tar.bz2 |    <<Binary file>>
 qt-font-default-subst.diff  |   77 -----------------------
 qt-patches.tar.bz2          |    <<Binary file>>
 qt.install                  |   24 -------
 qt.profile                  |    6 -
 qt3_pixmap.patch            |  140 ------------------------------------------
 utf8-bug-qt3.diff           |  101 ------------------------------
 10 files changed, 14 insertions(+), 432 deletions(-)


Index: extra/lib/qt/PKGBUILD
diff -u extra/lib/qt/PKGBUILD:1.32 extra/lib/qt/PKGBUILD:1.33
--- extra/lib/qt/PKGBUILD:1.32	Sat Nov 10 09:54:59 2007
+++ extra/lib/qt/PKGBUILD	Thu Nov 22 15:11:10 2007
@@ -1,9 +1,8 @@
-# $Id: PKGBUILD,v 1.32 2007/11/10 14:54:59 pierre Exp $
-# Maintainer: Vinay S Shastry (vinayshastry at gmail.com)
-
+# $Id: PKGBUILD,v 1.33 2007/11/22 20:11:10 pierre Exp $
+# Contributer: Vinay S Shastry (vinayshastry at gmail.com)
 pkgname=qt
 pkgver=4.3.2
-pkgrel=2
+pkgrel=3
 pkgdesc="The QT gui toolkit."
 arch=('i686' 'x86_64')
 url="http://www.trolltech.com/products/qt"
@@ -19,7 +18,7 @@
 source=(ftp://ftp.trolltech.com/qt/source/$_pkgfqn.tar.gz \
 	qt-copy-kde-patches.tar.bz2 \
         qt4-assistant.desktop  qt4-designer.desktop qt4-linguist.desktop )
-md5sums=('a60490b36099bdd10c4d2f55430075b3' '4313d6df34598448645b191aa25928a4'\
+md5sums=('a60490b36099bdd10c4d2f55430075b3' '6791705a68cab66275897deb5b420a3e'\
          'd4a1bea216aa184b1ffc1178808e17b1' '67adab60dd87270e733d25552a826950'\
          '40a36635b14c32bd2923e408c2e877bf' 'cd6e1c951e079e2eace67bce5e63966c')
 
@@ -30,7 +29,7 @@
   export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH}
   cd $startdir/src/$_pkgfqn
 
-  # patches from qt-copy (kde.org)
+  # patches from qt-copy (http://websvn.kde.org/trunk/qt-copy/patches/)
   for i in ../qt-copy-kde-patches/* ; do
     patch -Np0 -i $i || return 1
   done
@@ -45,21 +44,16 @@
   # start compiling qt
   sed -i 's|-cp -P -f|-cp -L -f|' qmake/Makefile.unix
   sed -i "s|-O2|$CXXFLAGS|" mkspecs/common/g++.conf
-  #sed -i "s|-I. |$CXXFLAGS -I. |" qmake/Makefile.unix
-
-  # sed -i "s|read acceptance|acceptance=yes|" configure
-  # an undocumented new way of accepting license:
-  # -confirm-license option to configure
 
   ./configure -confirm-license \
     -prefix /usr \
-    -docdir /usr/share/doc/$pkgname \
-    -plugindir /usr/lib/$pkgname/plugins \
-    -datadir /usr/share/$pkgname \
-    -translationdir /usr/share/$pkgname/translations \
-    -sysconfdir /etc/$pkgname \
-    -examplesdir /usr/share/doc/$pkgname/examples \
-    -demosdir /usr/share/doc/$pkgname/demos \
+    -docdir /usr/share/doc/qt \
+    -plugindir /usr/lib/qt/plugins \
+    -datadir /usr/share/qt \
+    -translationdir /usr/share/qt/translations \
+    -sysconfdir /etc/qt \
+    -examplesdir /usr/share/doc/qt/examples \
+    -demosdir /usr/share/doc/qt/demos \
     -release \
     -platform linux-g++ \
     -system-zlib \
@@ -81,11 +75,6 @@
   cp tools/assistant/images/{linguist,designer,assistant}.png $startdir/pkg/usr/share/pixmaps
   cp $startdir/src/qt4-{linguist,designer,assistant}.desktop $startdir/pkg/usr/share/applications
 
-  # profile
-  # since we disabled the qt3 profile by default this is not needed any more
-  #install -D -m755 $startdir/src/qt4.profile $startdir/pkg/etc/profile.d/qt4.sh
-  #[ "$CARCH" = "x86_64" ] && sed -i "s|linux-g++|linux-g++-64|g" $startdir/pkg/etc/profile.d/qt4.sh
-
   # lots of cleanup and path fixes - thanks to crazy (frugalware)
   find $startdir/pkg/usr/lib -type f -name '*prl' -print -exec sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" {} \;
   sed -i -e "s|-L$startdir/src/${_pkgfqn}/lib||g" $startdir/pkg/usr/lib/pkgconfig/*.pc
Index: extra/lib/qt/mysql.patch
diff -u extra/lib/qt/mysql.patch:1.1 extra/lib/qt/mysql.patch:removed
--- extra/lib/qt/mysql.patch:1.1	Sun Jun 24 09:28:38 2007
+++ extra/lib/qt/mysql.patch	Thu Nov 22 15:11:11 2007
@@ -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
Index: extra/lib/qt/qlistview.patch
diff -u extra/lib/qt/qlistview.patch:1.1 extra/lib/qt/qlistview.patch:removed
--- extra/lib/qt/qlistview.patch:1.1	Fri Jan 27 11:53:36 2006
+++ extra/lib/qt/qlistview.patch	Thu Nov 22 15:11:11 2007
@@ -1,14 +0,0 @@
-diff -uBbr qt-x11-free-3.3.5-old/src/widgets/qlistview.cpp
-qt-x11-free-3.3.5/src/widgets/qlistview.cpp
---- qt-x11-free-3.3.5-old/src/widgets/qlistview.cpp 2005-09-02
-05:43:15.000000000 -0700
-+++ qt-x11-free-3.3.5/src/widgets/qlistview.cpp 2005-11-04
-04:07:40.000000000 -0800
-@@ -3231,6 +3231,7 @@
-     d->focusItem = 0;
-     d->selectAnchor = 0;
-     d->pressedItem = 0;
-+    d->highlighted = 0;
-
-     // if it's down its downness makes no sense, so undown it
-     d->buttonDown = FALSE; 
Index: extra/lib/qt/qt-copy-kde-patches.tar.bz2
<<Binary file>>
Index: extra/lib/qt/qt-font-default-subst.diff
diff -u extra/lib/qt/qt-font-default-subst.diff:1.1 extra/lib/qt/qt-font-default-subst.diff:removed
--- extra/lib/qt/qt-font-default-subst.diff:1.1	Fri Apr  6 09:31:46 2007
+++ extra/lib/qt/qt-font-default-subst.diff	Thu Nov 22 15:11:11 2007
@@ -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,
Index: extra/lib/qt/qt-patches.tar.bz2
<<Binary file>>
Index: extra/lib/qt/qt.install
diff -u extra/lib/qt/qt.install:1.2 extra/lib/qt/qt.install:removed
--- extra/lib/qt/qt.install:1.2	Sun Sep 18 09:21:15 2005
+++ extra/lib/qt/qt.install	Thu Nov 22 15:11:11 2007
@@ -1,24 +0,0 @@
-post_install() {
-  if ! [ `grep '/opt/qt/lib' etc/ld.so.conf` ]; then
-    echo "/opt/qt/lib" >>etc/ld.so.conf
-    sbin/ldconfig -r .
-  fi
-  echo "INFORMATION:"
-  echo "Documentation is seperated it's called qt-doc"
-}
-
-post_upgrade() {
-  /bin/true
-}
-
-pre_remove() {
-  cat etc/ld.so.conf | grep -v '/opt/qt/lib' >/tmp/.pacqt
-  mv /tmp/.pacqt etc/ld.so.conf
-  chmod 644 etc/ld.so.conf
-  sbin/ldconfig -r .
-}
-
-op=$1
-shift
-
-$op $*
Index: extra/lib/qt/qt.profile
diff -u extra/lib/qt/qt.profile:1.1 extra/lib/qt/qt.profile:removed
--- extra/lib/qt/qt.profile:1.1	Sat Jul  9 15:56:29 2005
+++ extra/lib/qt/qt.profile	Thu Nov 22 15:11:11 2007
@@ -1,6 +0,0 @@
-export QTDIR=/opt/qt
-export QT_XFT=true
-export QMAKESPEC=$QTDIR/mkspecs/linux-g++
-export PATH=$PATH:$QTDIR/bin
-export MANPATH=$MANPATH:$QTDIR/man
-export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/qt/lib/pkgconfig
Index: extra/lib/qt/qt3_pixmap.patch
diff -u extra/lib/qt/qt3_pixmap.patch:1.1 extra/lib/qt/qt3_pixmap.patch:removed
--- extra/lib/qt/qt3_pixmap.patch:1.1	Thu Oct 19 10:58:45 2006
+++ extra/lib/qt/qt3_pixmap.patch	Thu Nov 22 15:11:11 2007
@@ -1,140 +0,0 @@
---- //depot/qt/3/src/kernel/qfontengine_x11.cpp	Thu Oct 19 14:41:41 CEST 2006
-+++ //depot/qt/3/src/kernel/qfontengine_x11.cpp	Thu Oct 19 14:41:41 CEST 2006
-
-@@ -171,7 +171,8 @@
- 
-     QRect br = xmat.mapRect(QRect(x, y - si->ascent, w, h));
-     QRect br2 = br & pdevRect;
--    if (br2.width() <= 0 || br2.height() <= 0)
-+    if (br2.width() <= 0 || br2.height() <= 0
-+        || br2.width() >= 32768 || br2.height() >= 32768)
-         return;
-     QWMatrix mat = QPixmap::trueMatrix( xmat, w, h );
-     QBitmap wx_bm = ::transform(dpy, bm, br2.x() - br.x(), br2.y() - br.y(), br2.width(), br2.height(), mat);
-
---- //depot/qt/3/src/kernel/qimage.cpp	Thu Oct 19 14:41:41 CEST 2006
-+++ //depot/qt/3/src/kernel/qimage.cpp	Thu Oct 19 14:41:41 CEST 2006
-
-@@ -475,7 +475,12 @@
- 		Endian bitOrder )
- {
-     init();
--    if ( w <= 0 || h <= 0 || depth <= 0 || numColors < 0 )
-+    int bpl = ((w*depth+31)/32)*4;	// bytes per scanline
-+    if ( w <= 0 || h <= 0 || depth <= 0 || numColors < 0
-+         || INT_MAX / sizeof(uchar *) < uint(h)
-+         || INT_MAX / uint(depth) < uint(w)
-+         || bpl <= 0
-+         || INT_MAX / uint(bpl) < uint(h) )
- 	return;					// invalid parameter(s)
-     data->w = w;
-     data->h = h;
-@@ -483,7 +488,6 @@
-     data->ncols = depth != 32 ? numColors : 0;
-     if ( !yourdata )
- 	return;	    // Image header info can be saved without needing to allocate memory.
--    int bpl = ((w*depth+31)/32)*4;	// bytes per scanline
-     data->nbytes = bpl*h;
-     if ( colortable || !data->ncols ) {
- 	data->ctbl = colortable;
-@@ -525,7 +529,10 @@
- 		Endian bitOrder )
- {
-     init();
--    if ( !yourdata || w <= 0 || h <= 0 || depth <= 0 || numColors < 0 )
-+    if ( !yourdata || w <= 0 || h <= 0 || depth <= 0 || numColors < 0
-+         || INT_MAX / sizeof(uchar *) < uint(h)
-+         || INT_MAX / uint(bpl) < uint(h)
-+         )
- 	return;					// invalid parameter(s)
-     data->w = w;
-     data->h = h;
-@@ -1264,7 +1271,7 @@
-     if ( data->ncols != numColors )		// could not alloc color table
- 	return FALSE;
- 
--    if ( INT_MAX / depth < width) { // sanity check for potential overflow
-+    if ( INT_MAX / uint(depth) < uint(width) ) { // sanity check for potential overflow
- 	setNumColors( 0 );
- 	return FALSE;
-     }
-@@ -1277,7 +1284,9 @@
-     // #### WWA: shouldn't this be (width*depth+7)/8:
-     const int pad = bpl - (width*depth)/8;	// pad with zeros
- #endif
--    if (INT_MAX / bpl < height) { // sanity check for potential overflow
-+    if ( INT_MAX / uint(bpl) < uint(height)
-+        || bpl < 0
-+        || INT_MAX / sizeof(uchar *) < uint(height) ) { // sanity check for potential overflow
- 	setNumColors( 0 );
- 	return FALSE;
-     }
-
---- //depot/qt/3/src/kernel/qpixmap_x11.cpp	Thu Oct 19 14:41:41 CEST 2006
-+++ //depot/qt/3/src/kernel/qpixmap_x11.cpp	Thu Oct 19 14:41:41 CEST 2006
-
-@@ -953,6 +953,9 @@
-     bool force_mono = (dd == 1 || isQBitmap() ||
- 		       (conversion_flags & ColorMode_Mask)==MonoOnly );
- 
-+    if ( w >= 32768 || h >= 32768 )
-+        return FALSE;
-+
-     // get rid of the mask
-     delete data->mask;
-     data->mask = 0;
-@@ -1678,11 +1681,11 @@
- 
- QPixmap QPixmap::xForm( const QWMatrix &matrix ) const
- {
--    int	   w = 0;
--    int	   h = 0;				// size of target pixmap
--    int	   ws, hs;				// size of source pixmap
-+    uint   w = 0;
-+    uint   h = 0;				// size of target pixmap
-+    uint   ws, hs;				// size of source pixmap
-     uchar *dptr;				// data in target pixmap
--    int	   dbpl, dbytes;			// bytes per line/bytes total
-+    uint   dbpl, dbytes;			// bytes per line/bytes total
-     uchar *sptr;				// data in original pixmap
-     int	   sbpl;				// bytes per line in original
-     int	   bpp;					// bits per pixel
-@@ -1697,19 +1700,24 @@
- 
-     QWMatrix mat( matrix.m11(), matrix.m12(), matrix.m21(), matrix.m22(), 0., 0. );
- 
-+    double scaledWidth;
-+    double scaledHeight;
-+
-     if ( matrix.m12() == 0.0F && matrix.m21() == 0.0F ) {
- 	if ( matrix.m11() == 1.0F && matrix.m22() == 1.0F )
- 	    return *this;			// identity matrix
--	h = qRound( matrix.m22()*hs );
--	w = qRound( matrix.m11()*ws );
--	h = QABS( h );
--	w = QABS( w );
-+	scaledHeight = matrix.m22()*hs;
-+	scaledWidth = matrix.m11()*ws;
-+	h = QABS( qRound( scaledHeight ) );
-+	w = QABS( qRound( scaledWidth ) );
-     } else {					// rotation or shearing
- 	QPointArray a( QRect(0,0,ws+1,hs+1) );
- 	a = mat.map( a );
- 	QRect r = a.boundingRect().normalize();
- 	w = r.width()-1;
- 	h = r.height()-1;
-+        scaledWidth = w;
-+        scaledHeight = h;
-     }
- 
-     mat = trueMatrix( mat, ws, hs ); // true matrix
-@@ -1718,7 +1726,8 @@
-     bool invertible;
-     mat = mat.invert( &invertible );		// invert matrix
- 
--    if ( h == 0 || w == 0 || !invertible ) {	// error, return null pixmap
-+    if ( h == 0 || w == 0 || !invertible
-+         || QABS(scaledWidth) >= 32768 || QABS(scaledHeight) >= 32768 ) {	// error, return null pixmap
- 	QPixmap pm;
- 	pm.data->bitmap = data->bitmap;
- 	return pm;
Index: extra/lib/qt/utf8-bug-qt3.diff
diff -u extra/lib/qt/utf8-bug-qt3.diff:1.1 extra/lib/qt/utf8-bug-qt3.diff:removed
--- extra/lib/qt/utf8-bug-qt3.diff:1.1	Fri Apr  6 09:31:46 2007
+++ extra/lib/qt/utf8-bug-qt3.diff	Thu Nov 22 15:11:11 2007
@@ -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);




More information about the arch-commits mailing list