summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2016-05-11 11:53:02 +0200
committerMarc Mutz <marc.mutz@kdab.com>2016-05-11 16:55:37 +0000
commite2e0dfee7c675c91132197b4a01a394a5da9a36f (patch)
tree7bb3c6ec1063536d2e4151e0300caaa8064cfc1b
parentf0d7080e9e640fdc7b540aba69bfbc14fc96ce39 (diff)
QtCore/QtDBus/QtSql: port the last remaining Q_FOREACH loop and add QT_NO_FOREACH
Port the last remaining Q_FOREACH user in QtCore to C++11 range-for and mark QtCore, QtSql and QtDBus as Q_FOREACH-free, using QT_NO_FOREACH. Change-Id: Ia6f99139cb1ca4a8bbe9e445421592242e048b0a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--src/corelib/corelib.pro2
-rw-r--r--src/corelib/statemachine/qstatemachine.cpp6
-rw-r--r--src/dbus/dbus.pro2
-rw-r--r--src/sql/sql.pro2
4 files changed, 9 insertions, 3 deletions
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index 362ac37a59..42fd5d1a61 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -8,7 +8,7 @@ MODULE_CONFIG = moc resources
CONFIG += $$MODULE_CONFIG
DEFINES += $$MODULE_DEFINES
-DEFINES += QT_NO_USING_NAMESPACE
+DEFINES += QT_NO_USING_NAMESPACE QT_NO_FOREACH
win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x67000000
irix-cc*:QMAKE_CXXFLAGS += -no_prelink -ptused
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp
index d5b01f3c8a..e3cfd7b988 100644
--- a/src/corelib/statemachine/qstatemachine.cpp
+++ b/src/corelib/statemachine/qstatemachine.cpp
@@ -1778,7 +1778,11 @@ void QStateMachinePrivate::_q_start()
{
Q_Q(QStateMachine);
Q_ASSERT(state == Starting);
- foreach (QAbstractState *state, configuration) {
+ // iterate over a copy, since we emit signals which may cause
+ // 'configuration' to change, resulting in undefined behavior when
+ // iterating at the same time:
+ const auto config = configuration;
+ for (QAbstractState *state : config) {
QAbstractStatePrivate *abstractStatePrivate = QAbstractStatePrivate::get(state);
abstractStatePrivate->active = false;
emit state->activeChanged(false);
diff --git a/src/dbus/dbus.pro b/src/dbus/dbus.pro
index 4c1aec7bb3..fa67fc17ef 100644
--- a/src/dbus/dbus.pro
+++ b/src/dbus/dbus.pro
@@ -23,6 +23,8 @@ win32 {
-luser32
}
+DEFINES += QT_NO_FOREACH
+
QMAKE_DOCS = $$PWD/doc/qtdbus.qdocconf
PUB_HEADERS = qdbusargument.h \
diff --git a/src/sql/sql.pro b/src/sql/sql.pro
index 218671d7e7..8846f03d78 100644
--- a/src/sql/sql.pro
+++ b/src/sql/sql.pro
@@ -6,7 +6,7 @@ win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x62000000
QMAKE_DOCS = $$PWD/doc/qtsql.qdocconf
-DEFINES += QT_NO_CAST_FROM_ASCII
+DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_FOREACH
PRECOMPILED_HEADER = ../corelib/global/qt_pch.h
SQL_P = sql