From a788f7e3a04ec741d59ef458a40e39d918dc1df0 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Mon, 1 Feb 2010 10:28:00 +0100
Subject: Designer/uic/related examples: Fix source code scanning issues II.

Fix spelling errors, foreach()/QString usage, explicit constructors.
Reviewed-By: Joerg Bornemann <joerg.bornemann@trolltech.com>
---
 examples/designer/taskmenuextension/tictactoedialog.h               | 2 +-
 examples/uitools/textfinder/textfinder.cpp                          | 2 +-
 src/tools/uic/cpp/cppwriteinitialization.cpp                        | 6 +++---
 src/tools/uic3/converter.cpp                                        | 6 +++---
 src/tools/uic3/main.cpp                                             | 4 ++--
 tools/designer/src/designer/qdesigner_server.h                      | 2 +-
 tools/designer/src/designer/versiondialog.cpp                       | 5 ++---
 tools/designer/src/lib/shared/qdesigner_taskmenu.cpp                | 2 +-
 tools/designer/src/plugins/widgets/q3table/q3table_plugin.h         | 2 +-
 tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_plugin.h     | 2 +-
 tools/designer/src/plugins/widgets/q3widgets/q3widget_plugins.h     | 6 +++---
 .../src/plugins/widgets/q3widgetstack/q3widgetstack_plugin.h        | 2 +-
 tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.h    | 2 +-
 tools/shared/findwidget/abstractfindwidget.h                        | 2 +-
 tools/shared/findwidget/itemviewfindwidget.h                        | 2 +-
 15 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/examples/designer/taskmenuextension/tictactoedialog.h b/examples/designer/taskmenuextension/tictactoedialog.h
index aeaaaf4..3d810dd 100644
--- a/examples/designer/taskmenuextension/tictactoedialog.h
+++ b/examples/designer/taskmenuextension/tictactoedialog.h
@@ -55,7 +55,7 @@ class TicTacToeDialog : public QDialog
     Q_OBJECT
 
 public:
-    TicTacToeDialog(TicTacToe *plugin = 0, QWidget *parent = 0);
+    explicit TicTacToeDialog(TicTacToe *plugin = 0, QWidget *parent = 0);
 
     QSize sizeHint() const;
 
diff --git a/examples/uitools/textfinder/textfinder.cpp b/examples/uitools/textfinder/textfinder.cpp
index 855f11f..1b7c14b 100644
--- a/examples/uitools/textfinder/textfinder.cpp
+++ b/examples/uitools/textfinder/textfinder.cpp
@@ -116,7 +116,7 @@ void TextFinder::on_findButton_clicked()
     if (isFirstTime == false)
         document->undo();
 
-    if (searchString == "") {
+    if (searchString.isEmpty()) {
         QMessageBox::information(this, tr("Empty Search Field"),
                 "The search field is empty. Please enter a word and click Find.");
     } else {
diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp
index d9aff1b..8099ffa 100644
--- a/src/tools/uic/cpp/cppwriteinitialization.cpp
+++ b/src/tools/uic/cpp/cppwriteinitialization.cpp
@@ -2787,8 +2787,8 @@ static void generateMultiDirectiveBegin(QTextStream &outputStream, const QSet<QS
         return;
 
     QMap<QString, bool> map; // bool is dummy. The idea is to sort that (always generate in the same order) by putting a set into a map
-    foreach (QString str, directives)
-        map[str] = true;
+    foreach (const QString &str, directives)
+        map.insert(str, true);
 
     if (map.size() == 1) {
         outputStream << "#ifndef " << map.constBegin().key() << endl;
@@ -2797,7 +2797,7 @@ static void generateMultiDirectiveBegin(QTextStream &outputStream, const QSet<QS
 
     outputStream << "#if";
     bool doOr = false;
-    foreach (QString str, map.keys()) {
+    foreach (const QString &str, map.keys()) {
         if (doOr)
             outputStream << " ||";
         outputStream << " !defined(" << str << ')';
diff --git a/src/tools/uic3/converter.cpp b/src/tools/uic3/converter.cpp
index 2bf293d..e1b4b38 100644
--- a/src/tools/uic3/converter.cpp
+++ b/src/tools/uic3/converter.cpp
@@ -401,7 +401,7 @@ DomUI *Ui3Reader::generateUi4(const QDomElement &widget)
             bool resolved = false;
             if (objName == receiver) {
                 // see if it's a custom slot
-                foreach (QString cs, ui_custom_slots) {
+                foreach (const QString &cs, ui_custom_slots) {
                     if (cs == slot) {
                         resolved = true;
                         break;
@@ -1122,7 +1122,7 @@ void Ui3Reader::createProperties(const QDomElement &n, QList<DomProperty*> *prop
             if (prop->kind() == DomProperty::Set) {
                 QStringList flags = prop->elementSet().split(QLatin1Char('|'));
                 QStringList v;
-                foreach (QString fl, flags) {
+                foreach (const QString &fl, flags) {
                     QString e = WidgetInfo::resolveEnumerator(className, fl);
                     if (e.isEmpty()) {
                         e = m_porting->renameEnumerator(className + QLatin1String("::") + fl);
@@ -1283,7 +1283,7 @@ QString Ui3Reader::fixType(const QString &t) const
     QString newText = t;
     //split type name on <>*& and whitespace
     QStringList typeNames = t.split(QRegExp(QLatin1String("<|>|\\*|&| ")), QString::SkipEmptyParts);
-    foreach(QString typeName , typeNames) {
+    foreach(const QString &typeName , typeNames) {
         QString newName = fixClassName(typeName);
         if( newName != typeName ) {
             newText.replace(typeName, newName);
diff --git a/src/tools/uic3/main.cpp b/src/tools/uic3/main.cpp
index 6acc94f..1ebb76a 100644
--- a/src/tools/uic3/main.cpp
+++ b/src/tools/uic3/main.cpp
@@ -338,10 +338,10 @@ int runUic3(int argc, char * argv[])
         QStringList globalIncludes, localIncludes;
         ui3.computeDeps(e, globalIncludes, localIncludes, impl);
 
-        foreach (QString i, globalIncludes)
+        foreach (const QString &i, globalIncludes)
             printf("%s\n", i.toLatin1().constData());
 
-        foreach (QString i, localIncludes)
+        foreach (const QString &i, localIncludes)
             printf("%s\n", i.toLatin1().constData());
 
         if (impl)
diff --git a/tools/designer/src/designer/qdesigner_server.h b/tools/designer/src/designer/qdesigner_server.h
index d522056..90cc624 100644
--- a/tools/designer/src/designer/qdesigner_server.h
+++ b/tools/designer/src/designer/qdesigner_server.h
@@ -74,7 +74,7 @@ class QDesignerClient: public QObject
 {
     Q_OBJECT
 public:
-    QDesignerClient(quint16 port, QObject *parent = 0);
+    explicit QDesignerClient(quint16 port, QObject *parent = 0);
     virtual ~QDesignerClient();
 
 private slots:
diff --git a/tools/designer/src/designer/versiondialog.cpp b/tools/designer/src/designer/versiondialog.cpp
index 51f546d..d9b03aa 100644
--- a/tools/designer/src/designer/versiondialog.cpp
+++ b/tools/designer/src/designer/versiondialog.cpp
@@ -113,15 +113,14 @@ void VersionLabel::mouseReleaseEvent(QMouseEvent *me)
         if (!secondStage) {
             m_path.lineTo(me->pos());
             bool gotIt = true;
-            QPoint pt;
-            foreach(pt, hitPoints) {
+            foreach(const QPoint &pt, hitPoints) {
                 if (!m_path.contains(pt)) {
                     gotIt = false;
                     break;
                 }
             }
             if (gotIt) {
-                foreach(pt, missPoints) {
+                foreach(const QPoint &pt, missPoints) {
                     if (m_path.contains(pt)) {
                         gotIt = false;
                         break;
diff --git a/tools/designer/src/lib/shared/qdesigner_taskmenu.cpp b/tools/designer/src/lib/shared/qdesigner_taskmenu.cpp
index 608ecd7..cd95f5b 100644
--- a/tools/designer/src/lib/shared/qdesigner_taskmenu.cpp
+++ b/tools/designer/src/lib/shared/qdesigner_taskmenu.cpp
@@ -675,7 +675,7 @@ void QDesignerTaskMenu::navigateToSlot(QDesignerFormEditorInterface *core,
         const QString signalSignature = selectedItem->text(0);
         const QStringList parameterNames = qVariantValue<QStringList>(selectedItem->data(0, Qt::UserRole));
 
-        // TODO: Check wether signal is connected to slot
+        // TODO: Check whether signal is connected to slot
         integr->emitNavigateToSlot(objectName, signalSignature, parameterNames);
     }
 }
diff --git a/tools/designer/src/plugins/widgets/q3table/q3table_plugin.h b/tools/designer/src/plugins/widgets/q3table/q3table_plugin.h
index 9c02467..0df5e0a 100644
--- a/tools/designer/src/plugins/widgets/q3table/q3table_plugin.h
+++ b/tools/designer/src/plugins/widgets/q3table/q3table_plugin.h
@@ -51,7 +51,7 @@ class Q3TablePlugin: public QObject, public QDesignerCustomWidgetInterface
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3TablePlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3TablePlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
diff --git a/tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_plugin.h b/tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_plugin.h
index 3b47f74..3a2ffe0 100644
--- a/tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_plugin.h
+++ b/tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_plugin.h
@@ -51,7 +51,7 @@ class Q3ToolBarPlugin: public QObject, public QDesignerCustomWidgetInterface
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3ToolBarPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3ToolBarPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
diff --git a/tools/designer/src/plugins/widgets/q3widgets/q3widget_plugins.h b/tools/designer/src/plugins/widgets/q3widgets/q3widget_plugins.h
index c750cfe..f4695de 100644
--- a/tools/designer/src/plugins/widgets/q3widgets/q3widget_plugins.h
+++ b/tools/designer/src/plugins/widgets/q3widgets/q3widget_plugins.h
@@ -133,7 +133,7 @@ class Q3DateTimeEditPlugin: public QObject, public QDesignerCustomWidgetInterfac
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3DateTimeEditPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3DateTimeEditPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
@@ -186,7 +186,7 @@ class Q3GroupBoxPlugin: public QObject, public QDesignerCustomWidgetInterface
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3GroupBoxPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3GroupBoxPlugin(const QIcon &icon, QObject *parent = 0);
     virtual ~Q3GroupBoxPlugin();
 
     virtual QString name() const;
@@ -239,7 +239,7 @@ class Q3TextBrowserPlugin: public QObject, public QDesignerCustomWidgetInterface
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3TextBrowserPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3TextBrowserPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
diff --git a/tools/designer/src/plugins/widgets/q3widgetstack/q3widgetstack_plugin.h b/tools/designer/src/plugins/widgets/q3widgetstack/q3widgetstack_plugin.h
index 56dd7fb..d61b4a1 100644
--- a/tools/designer/src/plugins/widgets/q3widgetstack/q3widgetstack_plugin.h
+++ b/tools/designer/src/plugins/widgets/q3widgetstack/q3widgetstack_plugin.h
@@ -51,7 +51,7 @@ class Q3WidgetStackPlugin: public QObject, public QDesignerCustomWidgetInterface
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3WidgetStackPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3WidgetStackPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
diff --git a/tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.h b/tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.h
index e8cf4fa..f96ba74 100644
--- a/tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.h
+++ b/tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.h
@@ -71,7 +71,7 @@ class Q3WizardExtraInfo: public QObject, public QDesignerExtraInfoExtension
     Q_OBJECT
     Q_INTERFACES(QDesignerExtraInfoExtension)
 public:
-    Q3WizardExtraInfo(Q3Wizard *wizard, QDesignerFormEditorInterface *core, QObject *parent);
+    explicit Q3WizardExtraInfo(Q3Wizard *wizard, QDesignerFormEditorInterface *core, QObject *parent);
 
     virtual QWidget *widget() const;
     virtual Q3Wizard *wizard() const;
diff --git a/tools/shared/findwidget/abstractfindwidget.h b/tools/shared/findwidget/abstractfindwidget.h
index 6cc7c94..089947d 100644
--- a/tools/shared/findwidget/abstractfindwidget.h
+++ b/tools/shared/findwidget/abstractfindwidget.h
@@ -70,7 +70,7 @@ public:
     };
     Q_DECLARE_FLAGS(FindFlags, FindFlag)
 
-    AbstractFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
+    explicit AbstractFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
     virtual ~AbstractFindWidget();
 
     bool eventFilter(QObject *object, QEvent *e);
diff --git a/tools/shared/findwidget/itemviewfindwidget.h b/tools/shared/findwidget/itemviewfindwidget.h
index 9d63d62..2d06df8 100644
--- a/tools/shared/findwidget/itemviewfindwidget.h
+++ b/tools/shared/findwidget/itemviewfindwidget.h
@@ -55,7 +55,7 @@ class ItemViewFindWidget : public AbstractFindWidget
     Q_OBJECT
 
 public:
-    ItemViewFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
+    explicit ItemViewFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
 
     QAbstractItemView *itemView() const
     { return m_itemView; }
-- 
cgit v0.12


From c830656616977d417972e2497ff3135bc562a660 Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date: Thu, 28 Jan 2010 21:32:20 +0100
Subject: optimize qhash()

on any modern architecture, an 1 out of 16 times needlessly executed
shift (even if a long one) and xor are less expensive than a pretty much
randomly 1 out of 16 times differently taken conditional jump. so simply
remove the conditional. ~15% faster on Core2.

Reviewed-by: joao
---
 src/corelib/tools/qhash.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp
index d758325..6231471 100644
--- a/src/corelib/tools/qhash.cpp
+++ b/src/corelib/tools/qhash.cpp
@@ -68,8 +68,8 @@ static uint hash(const uchar *p, int n)
 
     while (n--) {
         h = (h << 4) + *p++;
-        if ((g = (h & 0xf0000000)) != 0)
-            h ^= g >> 23;
+        g = h & 0xf0000000;
+        h ^= g >> 23;
         h &= ~g;
     }
     return h;
@@ -82,8 +82,8 @@ static uint hash(const QChar *p, int n)
 
     while (n--) {
         h = (h << 4) + (*p++).unicode();
-        if ((g = (h & 0xf0000000)) != 0)
-            h ^= g >> 23;
+        g = h & 0xf0000000;
+        h ^= g >> 23;
         h &= ~g;
     }
     return h;
-- 
cgit v0.12


From 0d772fe5d362861c0b59374a25ec4d0e0ba05181 Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date: Thu, 28 Jan 2010 17:38:17 +0100
Subject: micro-optimization

move up the headerdone setting, so the compiler can do tail-merging of
the branches
---
 src/corelib/codecs/qutfcodec.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp
index f7d3b06..f88fa8d 100644
--- a/src/corelib/codecs/qutfcodec.cpp
+++ b/src/corelib/codecs/qutfcodec.cpp
@@ -326,6 +326,7 @@ QString QUtf16::convertToUnicode(const char *chars, int len, QTextCodec::Convert
                 ch.setCell(*chars++);
             }
             if (!headerdone) {
+                headerdone = true;
                 if (endian == DetectEndianness) {
                     if (ch == QChar::ByteOrderSwapped && endian != BigEndianness) {
                         endian = LittleEndianness;
@@ -344,7 +345,6 @@ QString QUtf16::convertToUnicode(const char *chars, int len, QTextCodec::Convert
                 } else if (ch != QChar::ByteOrderMark) {
                     *qch++ = ch;
                 }
-                headerdone = true;
             } else {
                 *qch++ = ch;
             }
-- 
cgit v0.12


From 3c0370bd3d0ee83b84ea7c1cc579be51768df183 Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date: Thu, 28 Jan 2010 17:41:13 +0100
Subject: remove pointless conditionals

we already know that (endian == DetectEndianness) - we tested it 1 resp
3 lines above ...

Reviewed-By: denis
---
 src/corelib/codecs/qutfcodec.cpp | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp
index f88fa8d..7655c51 100644
--- a/src/corelib/codecs/qutfcodec.cpp
+++ b/src/corelib/codecs/qutfcodec.cpp
@@ -328,10 +328,9 @@ QString QUtf16::convertToUnicode(const char *chars, int len, QTextCodec::Convert
             if (!headerdone) {
                 headerdone = true;
                 if (endian == DetectEndianness) {
-                    if (ch == QChar::ByteOrderSwapped && endian != BigEndianness) {
+                    if (ch == QChar::ByteOrderSwapped) {
                         endian = LittleEndianness;
-                    } else if (ch == QChar::ByteOrderMark && endian != LittleEndianness) {
-                        // ignore BOM
+                    } else if (ch == QChar::ByteOrderMark) {
                         endian = BigEndianness;
                     } else {
                         if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
-- 
cgit v0.12


From 984689f01ce31cade5452633dd43f676bdb75b73 Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date: Thu, 28 Jan 2010 18:01:47 +0100
Subject: remove duplicated calculation of length

---
 src/corelib/tools/qlist.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/corelib/tools/qlist.cpp b/src/corelib/tools/qlist.cpp
index f1df9bd..c302857 100644
--- a/src/corelib/tools/qlist.cpp
+++ b/src/corelib/tools/qlist.cpp
@@ -208,7 +208,7 @@ void **QListData::append2(const QListData& l)
     int n = l.d->end - l.d->begin;
     if (n) {
         if (e + n > d->alloc)
-            realloc(grow(e + l.d->end - l.d->begin));
+            realloc(grow(e + n));
         d->end += n;
     }
     return d->array + e;
-- 
cgit v0.12


From 45591e13862963fb29c13e0c5bfe39330883c579 Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date: Fri, 29 Jan 2010 13:07:28 +0100
Subject: document QString::fromUtf16() slowness

---
 src/corelib/tools/qstring.cpp | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index b9dd4d1..44e4d16 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -3857,6 +3857,12 @@ QString QString::fromUtf8(const char *str, int size)
     If \a size is -1 (default), \a unicode must be terminated
     with a 0.
 
+    This function checks for a Byte Order Mark (BOM). If it is missing,
+    host byte order is assumed.
+
+    This function is comparatively slow.
+    Use QString(const ushort *, int) if possible.
+
     QString makes a deep copy of the Unicode data.
 
     \sa utf16(), setUtf16()
@@ -3923,6 +3929,9 @@ QString& QString::setUnicode(const QChar *unicode, int size)
     If \a unicode is 0, nothing is copied, but the string is still
     resized to \a size.
 
+    Note that unlike fromUtf16(), this function does not consider BOMs and
+    possibly differing byte ordering.
+
     \sa utf16(), setUnicode()
 */
 
@@ -4669,6 +4678,8 @@ int QString::localeAwareCompare_helper(const QChar *data1, int length1,
     Returns the QString as a '\\0\'-terminated array of unsigned
     shorts. The result remains valid until the string is modified.
 
+    The returned string is in host byte order.
+
     \sa unicode()
 */
 
-- 
cgit v0.12


From e0fda52fde32458c4a42f04bd62b5e37f14c4bfd Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date: Fri, 29 Jan 2010 16:44:12 +0100
Subject: optimization: get rid of QString::fromUtf16() usage

QString::fromUtf16() is slow - it does a BOM check and optionally byte
swapping, which is utterly pointless when converting internal data
structures which are raw utf16 in host byte order anyway. so replace
it with QString::fromRawData() (for short-lived strings) or
QString(const QChar *, int) (otherwise) if possible.

Reviewed-by: axis
Reviewed-by: mariusSO
Reviewed-by: Bill King
---
 examples/network/qftp/sym_iap_util.h    | 2 +-
 src/corelib/io/qprocess_unix.cpp        | 2 +-
 src/corelib/kernel/qcore_symbian_p.cpp  | 2 +-
 src/corelib/kernel/qcoreapplication.cpp | 3 ++-
 src/corelib/kernel/qtranslator.cpp      | 2 +-
 src/corelib/tools/qstring.cpp           | 4 ++--
 src/gui/itemviews/qitemdelegate.cpp     | 2 +-
 src/gui/kernel/qclipboard_s60.cpp       | 3 ++-
 src/gui/kernel/qdnd_x11.cpp             | 2 +-
 src/gui/kernel/qmime_mac.cpp            | 4 ++--
 src/sql/drivers/sqlite/qsql_sqlite.cpp  | 4 ++--
 src/sql/kernel/qsqlresult.cpp           | 2 +-
 tools/linguist/shared/qm.cpp            | 2 +-
 13 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/examples/network/qftp/sym_iap_util.h b/examples/network/qftp/sym_iap_util.h
index 8079d2c..41e43a9 100644
--- a/examples/network/qftp/sym_iap_util.h
+++ b/examples/network/qftp/sym_iap_util.h
@@ -298,7 +298,7 @@ QString qt_TDesC2QStringL(const TDesC& aDescriptor)
 #ifdef QT_NO_UNICODE
     return QString::fromLocal8Bit(aDescriptor.Ptr(), aDescriptor.Length());
 #else
-    return QString::fromUtf16(aDescriptor.Ptr(), aDescriptor.Length());
+    return QString((const QChar *)aDescriptor.Ptr(), aDescriptor.Length());
 #endif
 }
 
diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp
index 0bf7d3f..5119ec0 100644
--- a/src/corelib/io/qprocess_unix.cpp
+++ b/src/corelib/io/qprocess_unix.cpp
@@ -783,7 +783,7 @@ bool QProcessPrivate::processStarted()
 
     // did we read an error message?
     if (i > 0)
-        q_func()->setErrorString(QString::fromUtf16(buf, i / sizeof(QChar)));
+        q_func()->setErrorString(QString((const QChar *)buf, i / sizeof(QChar)));
 
     return i <= 0;
 }
diff --git a/src/corelib/kernel/qcore_symbian_p.cpp b/src/corelib/kernel/qcore_symbian_p.cpp
index 5d2a6a5..0257ac4 100644
--- a/src/corelib/kernel/qcore_symbian_p.cpp
+++ b/src/corelib/kernel/qcore_symbian_p.cpp
@@ -71,7 +71,7 @@ Q_CORE_EXPORT QString qt_TDesC2QString(const TDesC& aDescriptor)
 #ifdef QT_NO_UNICODE
     return QString::fromLocal8Bit(aDescriptor.Ptr(), aDescriptor.Length());
 #else
-    return QString::fromUtf16(aDescriptor.Ptr(), aDescriptor.Length());
+    return QString(reinterpret_cast<const QChar *>(aDescriptor.Ptr()), aDescriptor.Length());
 #endif
 }
 
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 005dedc..5c65416 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -2219,7 +2219,8 @@ QStringList QCoreApplication::libraryPaths()
             TFindFile finder(fs);
             TInt err = finder.FindByDir(tempPathPtr, tempPathPtr);
             while (err == KErrNone) {
-                QString foundDir = QString::fromUtf16(finder.File().Ptr(), finder.File().Length());
+                QString foundDir(reinterpret_cast<const QChar *>(finder.File().Ptr()),
+                                 finder.File().Length());
                 foundDir = QDir(foundDir).canonicalPath();
                 if (!app_libpaths->contains(foundDir))
                     app_libpaths->append(foundDir);
diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp
index b7e6ea0..7d1e1d3 100644
--- a/src/corelib/kernel/qtranslator.cpp
+++ b/src/corelib/kernel/qtranslator.cpp
@@ -633,7 +633,7 @@ static QString getMessage(const uchar *m, const uchar *end, const char *context,
 end:
     if (!tn)
         return QString();
-    QString str = QString::fromUtf16((const ushort *)tn, tn_length/2);
+    QString str = QString((const QChar *)tn, tn_length/2);
     if (QSysInfo::ByteOrder == QSysInfo::LittleEndian) {
         for (int i = 0; i < str.length(); ++i)
             str[i] = QChar((str.at(i).unicode() >> 8) + ((str.at(i).unicode() << 8) & 0xff00));
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 44e4d16..3388500 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -885,7 +885,7 @@ int QString::grow(int size)
 QString QString::fromWCharArray(const wchar_t *string, int size)
 {
     if (sizeof(wchar_t) == sizeof(QChar)) {
-        return fromUtf16((ushort *)string, size);
+        return QString((const QChar *)string, size);
     } else {
         return fromUcs4((uint *)string, size);
     }
@@ -7751,7 +7751,7 @@ QString QStringRef::toString() const {
         return QString();
     if (m_size && m_position == 0 && m_size == m_string->size())
         return *m_string;
-    return QString::fromUtf16(reinterpret_cast<const ushort*>(m_string->unicode() + m_position), m_size);
+    return QString(m_string->unicode() + m_position, m_size);
 }
 
 
diff --git a/src/gui/itemviews/qitemdelegate.cpp b/src/gui/itemviews/qitemdelegate.cpp
index 6fd26a7..9069ce4 100644
--- a/src/gui/itemviews/qitemdelegate.cpp
+++ b/src/gui/itemviews/qitemdelegate.cpp
@@ -1033,7 +1033,7 @@ static QString qPixmapSerial(quint64 i, bool enabled)
         i >>= 4;
     }
 
-    return QString::fromUtf16(ptr, int(&arr[sizeof(arr) / sizeof(ushort)] - ptr));
+    return QString((const QChar *)ptr, int(&arr[sizeof(arr) / sizeof(ushort)] - ptr));
 }
 
 /*!
diff --git a/src/gui/kernel/qclipboard_s60.cpp b/src/gui/kernel/qclipboard_s60.cpp
index 71c355b..f07e066 100644
--- a/src/gui/kernel/qclipboard_s60.cpp
+++ b/src/gui/kernel/qclipboard_s60.cpp
@@ -164,7 +164,8 @@ void readFromStreamLX(QMimeData* aData,RReadStream& aStream)
         TCardinality mimeTypeSize;
         aStream >> mimeTypeSize;
         HBufC* mimeTypeBuf = HBufC::NewLC(aStream,mimeTypeSize);
-        QString mimeType = QString::fromUtf16(mimeTypeBuf->Des().Ptr(),mimeTypeBuf->Length());
+        QString mimeType = QString(reinterpret_cast<const QChar *>(mimeTypeBuf->Des().Ptr()),
+                                   mimeTypeBuf->Length());
         CleanupStack::PopAndDestroy(mimeTypeBuf);
         // mime data
         TCardinality dataSize;
diff --git a/src/gui/kernel/qdnd_x11.cpp b/src/gui/kernel/qdnd_x11.cpp
index edab6a0..33968bd 100644
--- a/src/gui/kernel/qdnd_x11.cpp
+++ b/src/gui/kernel/qdnd_x11.cpp
@@ -617,7 +617,7 @@ QVariant QX11Data::xdndMimeConvertToFormat(Atom a, const QByteArray &data, const
             // so it should be safe to check that the second char is 0
             // to verify that it is utf16
             if (data.size() > 1 && data.at(1) == 0)
-                return QString::fromUtf16(reinterpret_cast<const ushort *>(data.constData()),
+                return QString::fromRawData((const QChar *)data.constData(),
                                 data.size() / 2).split(QLatin1Char('\n')).first().toLatin1();
         }
     }
diff --git a/src/gui/kernel/qmime_mac.cpp b/src/gui/kernel/qmime_mac.cpp
index 0431f2f..071f80d 100644
--- a/src/gui/kernel/qmime_mac.cpp
+++ b/src/gui/kernel/qmime_mac.cpp
@@ -431,8 +431,8 @@ QVariant QMacPasteboardMimeUnicodeText::convertToMime(const QString &mimetype, Q
                                              firstData.size(), CFStringGetSystemEncoding(), false));
         ret = QString(str);
     } else if (flavor == QLatin1String("public.utf16-plain-text")) {
-        ret = QString::fromUtf16(reinterpret_cast<const ushort *>(firstData.constData()),
-                                 firstData.size() / sizeof(ushort));
+        ret = QString(reinterpret_cast<const QChar *>(firstData.constData()),
+                      firstData.size() / sizeof(QChar));
     } else {
         qWarning("QMime::convertToMime: unhandled mimetype: %s", qPrintable(mimetype));
     }
diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp
index 9dbefaf..9fff552 100644
--- a/src/sql/drivers/sqlite/qsql_sqlite.cpp
+++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp
@@ -245,9 +245,9 @@ bool QSQLiteResultPrivate::fetchNext(QSqlCachedResult::ValueCache &values, int i
                 values[i + idx] = QVariant(QVariant::String);
                 break;
             default:
-                values[i + idx] = QString::fromUtf16(static_cast<const ushort *>(
+                values[i + idx] = QString(reinterpret_cast<const QChar *>(
                             sqlite3_column_text16(stmt, i)),
-                            sqlite3_column_bytes16(stmt, i) / sizeof(ushort));
+                            sqlite3_column_bytes16(stmt, i) / sizeof(QChar));
                 break;
             }
         }
diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp
index 5f12b55..3d63f88 100644
--- a/src/sql/kernel/qsqlresult.cpp
+++ b/src/sql/kernel/qsqlresult.cpp
@@ -136,7 +136,7 @@ static QString qFieldSerial(int i)
         i >>= 4;
     }
 
-    return QString::fromUtf16(arr, int(ptr - arr) + 1);
+    return QString(reinterpret_cast<const QChar *>(arr), int(ptr - arr) + 1);
 }
 
 static bool qIsAlnum(QChar ch)
diff --git a/tools/linguist/shared/qm.cpp b/tools/linguist/shared/qm.cpp
index 8118576..de1284f 100644
--- a/tools/linguist/shared/qm.cpp
+++ b/tools/linguist/shared/qm.cpp
@@ -594,7 +594,7 @@ bool loadQM(Translator &translator, QIODevice &dev, ConversionData &cd)
                     return false;
                 }
                 m += 4;
-                QString str = QString::fromUtf16((const ushort *)m, len/2);
+                QString str = QString((const QChar *)m, len/2);
                 if (QSysInfo::ByteOrder == QSysInfo::LittleEndian) {
                     for (int i = 0; i < str.length(); ++i)
                         str[i] = QChar((str.at(i).unicode() >> 8) +
-- 
cgit v0.12