From 4d5803775a40b35da77c886f4ebf13d04df214aa Mon Sep 17 00:00:00 2001 From: Alexey Brodkin Date: Thu, 14 Jan 2016 18:51:31 +0300 Subject: Fix library inclusion order when building statically When building application statically, it's important to keep libraries we're linking against in order. qmake's "*=" operator fails to do that, so use "+=" instead. Change-Id: Id3627da47d07c70fd07185a777f2f07bb4057f03 Reviewed-by: Oswald Buddenhagen --- config.tests/unix/compile.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.tests/unix/compile.test b/config.tests/unix/compile.test index 103321e451..65bc874617 100755 --- a/config.tests/unix/compile.test +++ b/config.tests/unix/compile.test @@ -67,7 +67,7 @@ test -r Makefile && $MAKE distclean >/dev/null 2>&1 # Make sure output from possible previous tests is gone rm -f "$EXE" "${EXE}.exe" -set -- "$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "CONFIG+=android_app" "CONFIG-=debug_and_release app_bundle lib_bundle" "LIBS*=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile" +set -- "$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "CONFIG+=android_app" "CONFIG-=debug_and_release app_bundle lib_bundle" "LIBS+=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile" if [ "$VERBOSE" = "yes" ]; then OUTDIR=$OUTDIR "$@" && $MAKE && SUCCESS=yes else -- cgit v1.2.3 From c20920fbe150275e12e864db79dd9665b322b0f7 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 18 Jan 2016 13:22:35 +0100 Subject: QFutureInterface: add missing mutex lock to progress getters These variables are accessed from both the executing thread as well as the thread waiting for results. Note for some variables which threads access them. Change-Id: I1c84ddff92585abb32341c42072106066e485f7e Reviewed-by: Thiago Macieira --- src/corelib/thread/qfutureinterface.cpp | 3 +++ src/corelib/thread/qfutureinterface_p.h | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/corelib/thread/qfutureinterface.cpp b/src/corelib/thread/qfutureinterface.cpp index 05c4371a58..60155c96fd 100644 --- a/src/corelib/thread/qfutureinterface.cpp +++ b/src/corelib/thread/qfutureinterface.cpp @@ -193,16 +193,19 @@ void QFutureInterfaceBase::waitForResume() int QFutureInterfaceBase::progressValue() const { + const QMutexLocker lock(&d->m_mutex); return d->m_progressValue; } int QFutureInterfaceBase::progressMinimum() const { + const QMutexLocker lock(&d->m_mutex); return d->m_progressMinimum; } int QFutureInterfaceBase::progressMaximum() const { + const QMutexLocker lock(&d->m_mutex); return d->m_progressMaximum; } diff --git a/src/corelib/thread/qfutureinterface_p.h b/src/corelib/thread/qfutureinterface_p.h index 2321ce8d72..e2d588cd07 100644 --- a/src/corelib/thread/qfutureinterface_p.h +++ b/src/corelib/thread/qfutureinterface_p.h @@ -146,18 +146,20 @@ public: QAtomicInt m_refCountT; }; + // T: accessed from executing thread + // Q: accessed from the waiting/querying thread RefCount refCount; mutable QMutex m_mutex; QWaitCondition waitCondition; QList outputConnections; - int m_progressValue; - int m_progressMinimum; - int m_progressMaximum; + int m_progressValue; // TQ + int m_progressMinimum; // TQ + int m_progressMaximum; // TQ QFutureInterfaceBase::State state; QElapsedTimer progressTime; QWaitCondition pausedWaitCondition; QtPrivate::ResultStoreBase m_results; - bool manualProgress; + bool manualProgress; // only accessed from executing thread int m_expectedResultCount; QtPrivate::ExceptionStore m_exceptionStore; QString m_progressText; -- cgit v1.2.3 From a40ea0948d9af25fbfe80c53b0e23747e84ba9e8 Mon Sep 17 00:00:00 2001 From: Samuel Gaist Date: Mon, 28 Sep 2015 18:03:02 +0200 Subject: MySql: add failing connection test This test ensure that a connection made to either an invalid host or an unreachable host fails properly. Task-number: QTBUG-47452 Change-Id: If31d23d815e496fc21ef2e1e19c34c2723bd3504 Reviewed-by: Oswald Buddenhagen Reviewed-by: Andy Shaw Reviewed-by: Thiago Macieira --- tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp index 1993f23672..975a17f93d 100644 --- a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp +++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp @@ -146,6 +146,7 @@ private slots: void mysql_multiselect(); // For task 144331 void mysql_savepointtest_data() { generic_data("QMYSQL"); } void mysql_savepointtest(); + void mysql_connectWithInvalidAddress(); void accessOdbc_strings_data() { generic_data(); } void accessOdbc_strings(); @@ -2192,6 +2193,14 @@ void tst_QSqlDatabase::mysql_savepointtest() QVERIFY_SQL(q, exec("savepoint foo")); } +void tst_QSqlDatabase::mysql_connectWithInvalidAddress() +{ + // Ensure that giving invalid connection parameters fails correctly + QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); + db.setHostName("invalid.local"); + QCOMPARE(db.open(), false); +} + void tst_QSqlDatabase::oci_tables() { QSKIP("Requires specific permissions to create a system table"); -- cgit v1.2.3