diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2011-01-11 18:40:35 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2011-01-11 18:40:35 (GMT) |
commit | 6e16cc33983c9ed2c8362f0d31ef712df7949375 (patch) | |
tree | 651d817b76ab56936aa8b6ede2763d6efdba905a | |
parent | 42f3142df03bc978a99fb0c41cd23c8b5a99569c (diff) | |
parent | 924238ae5a3c784d907cf6f95df8eb7c3e568970 (diff) | |
download | Qt-6e16cc33983c9ed2c8362f0d31ef712df7949375.zip Qt-6e16cc33983c9ed2c8362f0d31ef712df7949375.tar.gz Qt-6e16cc33983c9ed2c8362f0d31ef712df7949375.tar.bz2 |
Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt-earth-staging into master-integration
* 'master' of scm.dev.nokia.troll.no:qt/qt-earth-staging:
QProcessManager: minor optimization
use qBinaryFind instead of bsearch
use qBinaryFind instead of bsearch
fix two more "comparison between signed and unsigned integer expressions" warnings
fix 'QChar::QChar(char)' is deprecated
fix another "comparison between signed and unsigned integer expressions"
fix warning "comparison between signed and unsigned integer expressions"
fix warning "missing braces around initializer for 'in_addr::<anonymous union>'"
fix warning "'SeedStorage* randTLS()' defined but not used"
remove unused header include
make the modifySemaphore() signal-safe on linux
fix/stabilizate the year sign change test
deal with utcOffset in a correct way
-rw-r--r-- | src/corelib/global/qglobal.cpp | 14 | ||||
-rw-r--r-- | src/corelib/io/qprocess_unix.cpp | 16 | ||||
-rw-r--r-- | src/corelib/kernel/qsystemsemaphore_unix.cpp | 9 | ||||
-rw-r--r-- | src/corelib/tools/qdatetime.cpp | 6 | ||||
-rw-r--r-- | src/gui/dialogs/qfiledialog.cpp | 2 | ||||
-rw-r--r-- | src/gui/image/qxpmhandler.cpp | 32 | ||||
-rw-r--r-- | src/gui/painting/qcolor_p.cpp | 36 | ||||
-rw-r--r-- | src/network/socket/qnativesocketengine_win.cpp | 25 | ||||
-rw-r--r-- | src/plugins/codecs/kr/qeuckrcodec.cpp | 16 | ||||
-rw-r--r-- | src/sql/drivers/odbc/qsql_odbc.cpp | 4 | ||||
-rw-r--r-- | tests/auto/qdatetime/tst_qdatetime.cpp | 8 |
11 files changed, 60 insertions, 108 deletions
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 9b597f6..5d079d0 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -2589,7 +2589,7 @@ bool qputenv(const char *varName, const QByteArray& value) #endif } -#if (defined(Q_OS_UNIX) || defined(Q_OS_WIN)) && !defined(QT_NO_THREAD) +#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN) && !defined(QT_NO_THREAD) # if defined(Q_OS_INTEGRITY) && defined(__GHS_VERSION_NUMBER) && (__GHS_VERSION_NUMBER < 500) // older versions of INTEGRITY used a long instead of a uint for the seed. @@ -2620,7 +2620,7 @@ Q_GLOBAL_STATIC(SeedStorage, randTLS) // Thread Local Storage for seed value */ void qsrand(uint seed) { -#if defined(Q_OS_UNIX) && !defined(QT_NO_THREAD) && !defined(Q_OS_SYMBIAN) +#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN) && !defined(QT_NO_THREAD) SeedStorage *seedStorage = randTLS(); if (seedStorage) { SeedStorageType *pseed = seedStorage->localData(); @@ -2628,10 +2628,10 @@ void qsrand(uint seed) seedStorage->setLocalData(pseed = new SeedStorageType); *pseed = seed; } else { - //golbal static seed storage should always exist, + //global static seed storage should always exist, //except after being deleted by QGlobalStaticDeleter. //But since it still can be called from destructor of another - //global static object, fallback to sqrand(seed) + //global static object, fallback to srand(seed) srand(seed); } #else @@ -2659,7 +2659,7 @@ void qsrand(uint seed) */ int qrand() { -#if defined(Q_OS_UNIX) && !defined(QT_NO_THREAD) && !defined(Q_OS_SYMBIAN) +#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN) && !defined(QT_NO_THREAD) SeedStorage *seedStorage = randTLS(); if (seedStorage) { SeedStorageType *pseed = seedStorage->localData(); @@ -2669,10 +2669,10 @@ int qrand() } return rand_r(pseed); } else { - //golbal static seed storage should always exist, + //global static seed storage should always exist, //except after being deleted by QGlobalStaticDeleter. //But since it still can be called from destructor of another - //global static object, fallback to qrand() + //global static object, fallback to rand() return rand(); } #else diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp index 299280e..d4cf3f5 100644 --- a/src/corelib/io/qprocess_unix.cpp +++ b/src/corelib/io/qprocess_unix.cpp @@ -95,7 +95,7 @@ QT_END_NAMESPACE #include <qfile.h> #include <qfileinfo.h> #include <qlist.h> -#include <qmap.h> +#include <qhash.h> #include <qmutex.h> #include <qsemaphore.h> #include <qsocketnotifier.h> @@ -163,7 +163,7 @@ public: private: QMutex mutex; - QMap<int, QProcessInfo *> children; + QHash<int, QProcessInfo *> children; }; @@ -281,7 +281,7 @@ void QProcessManager::catchDeadChildren() // try to catch all children whose pid we have registered, and whose // deathPipe is still valid (i.e, we have not already notified it). - QMap<int, QProcessInfo *>::Iterator it = children.begin(); + QHash<int, QProcessInfo *>::Iterator it = children.begin(); while (it != children.end()) { // notify all children that they may have died. they need to run // waitpid() in their own thread. @@ -320,15 +320,11 @@ void QProcessManager::remove(QProcess *process) QMutexLocker locker(&mutex); int serial = process->d_func()->serial; - QProcessInfo *info = children.value(serial); - if (!info) - return; - + QProcessInfo *info = children.take(serial); #if defined (QPROCESS_DEBUG) - qDebug() << "QProcessManager::remove() removing pid" << info->pid << "process" << info->process; + if (info) + qDebug() << "QProcessManager::remove() removing pid" << info->pid << "process" << info->process; #endif - - children.remove(serial); delete info; } diff --git a/src/corelib/kernel/qsystemsemaphore_unix.cpp b/src/corelib/kernel/qsystemsemaphore_unix.cpp index 07e3618..445fef8 100644 --- a/src/corelib/kernel/qsystemsemaphore_unix.cpp +++ b/src/corelib/kernel/qsystemsemaphore_unix.cpp @@ -50,11 +50,11 @@ #include <sys/types.h> #include <sys/ipc.h> +#include <sys/sem.h> #include <fcntl.h> #include <errno.h> -#include <sys/shm.h> -#include <sys/sem.h> +#include "private/qcore_unix_p.h" // OpenBSD 4.2 doesn't define EIDRM, see BUGS section: // http://www.openbsd.org/cgi-bin/man.cgi?query=semop&manpath=OpenBSD+4.2 @@ -218,7 +218,10 @@ bool QSystemSemaphorePrivate::modifySemaphore(int count) operation.sem_num = 0; operation.sem_op = count; operation.sem_flg = SEM_UNDO; - if (-1 == semop(semaphore, &operation, 1)) { + + register int res; + EINTR_LOOP(res, semop(semaphore, &operation, 1)); + if (-1 == res) { // If the semaphore was removed be nice and create it and then modifySemaphore again if (errno == EINVAL || errno == EIDRM) { semaphore = -1; diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 6a20c7a..9f71457 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -3426,8 +3426,9 @@ QDateTime QDateTime::fromString(const QString& s, Qt::DateFormat f) QString tz = parts.at(5); if (!tz.startsWith(QLatin1String("GMT"), Qt::CaseInsensitive)) return QDateTime(); - int tzoffset = 0; + QDateTime dt(date, time, Qt::UTC); if (tz.length() > 3) { + int tzoffset = 0; QChar sign = tz.at(3); if ((sign != QLatin1Char('+')) && (sign != QLatin1Char('-'))) { @@ -3442,8 +3443,9 @@ QDateTime QDateTime::fromString(const QString& s, Qt::DateFormat f) tzoffset = (tzhour*60 + tzminute) * 60; if (sign == QLatin1Char('-')) tzoffset = -tzoffset; + dt.setUtcOffset(tzoffset); } - return QDateTime(date, time, Qt::UTC).addSecs(-tzoffset).toLocalTime(); + return dt.toLocalTime(); } #endif //QT_NO_TEXTDATE } diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index 9509330..f7fa705 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -3311,7 +3311,7 @@ QString QFSCompleter::pathFromIndex(const QModelIndex &index) const if (currentLocation == QDir::separator()) return path.mid(currentLocation.length()); #endif - if (currentLocation.endsWith('/')) + if (currentLocation.endsWith(QLatin1Char('/'))) return path.mid(currentLocation.length()); else return path.mid(currentLocation.length()+1); diff --git a/src/gui/image/qxpmhandler.cpp b/src/gui/image/qxpmhandler.cpp index 453100c..6afb305 100644 --- a/src/gui/image/qxpmhandler.cpp +++ b/src/gui/image/qxpmhandler.cpp @@ -54,12 +54,6 @@ #include "qplatformdefs.h" #endif -#include <stdlib.h> - -#if defined(Q_OS_WINCE) -#include "qguifunctions_wince.h" -#endif - QT_BEGIN_NAMESPACE static quint64 xpmHash(const QString &str) @@ -751,27 +745,15 @@ static const struct XPMRGBData { { QRGB(139,139, 0), "yellow4" }, { QRGB(154,205, 50), "yellowgreen" } }; -#if defined(Q_C_CALLBACKS) -extern "C" { -#endif -static int rgb_cmp(const void *d1, const void *d2) -{ - return qstricmp(((XPMRGBData *)d1)->name, ((XPMRGBData *)d2)->name); -} -#if defined(Q_C_CALLBACKS) -} -#endif +inline bool operator<(const char *name, const XPMRGBData &data) +{ return qstrcmp(name, data.name) < 0; } +inline bool operator<(const XPMRGBData &data, const char *name) +{ return qstrcmp(data.name, name) < 0; } -static bool qt_get_named_xpm_rgb(const char *name_no_space, QRgb *rgb) +static inline bool qt_get_named_xpm_rgb(const char *name_no_space, QRgb *rgb) { - XPMRGBData x; - x.name = name_no_space; - // Function bsearch() is supposed to be - // void *bsearch(const void *key, const void *base, ... - // So why (char*)? Are there broken bsearch() declarations out there? - XPMRGBData *r = (XPMRGBData *)bsearch((char *)&x, (char *)xpmRgbTbl, xpmRgbTblSize, - sizeof(XPMRGBData), rgb_cmp); - if (r) { + const XPMRGBData *r = qBinaryFind(xpmRgbTbl, xpmRgbTbl + xpmRgbTblSize, name_no_space); + if (r != xpmRgbTbl + xpmRgbTblSize) { *rgb = r->value; return true; } else { diff --git a/src/gui/painting/qcolor_p.cpp b/src/gui/painting/qcolor_p.cpp index b1adf9f..d66990d 100644 --- a/src/gui/painting/qcolor_p.cpp +++ b/src/gui/painting/qcolor_p.cpp @@ -49,9 +49,6 @@ #include "qrgb.h" #include "qstringlist.h" -#if defined(Q_WS_WINCE) -#include "qguifunctions_wince.h" -#endif QT_BEGIN_NAMESPACE static inline int h2i(char hex) @@ -290,33 +287,16 @@ static const int rgbTblSize = sizeof(rgbTbl) / sizeof(RGBData); #undef rgb -QT_BEGIN_INCLUDE_NAMESPACE -#include <stdlib.h> -QT_END_INCLUDE_NAMESPACE - -#if defined(Q_C_CALLBACKS) -extern "C" { -#endif - -#ifdef Q_OS_WINCE -static int __cdecl rgb_cmp(const void *d1, const void *d2) -#else -static int rgb_cmp(const void *d1, const void *d2) -#endif -{ - return qstricmp(((RGBData *)d1)->name, ((RGBData *)d2)->name); -} - -#if defined(Q_C_CALLBACKS) -} -#endif +inline bool operator<(const char *name, const RGBData &data) +{ return qstrcmp(name, data.name) < 0; } +inline bool operator<(const RGBData &data, const char *name) +{ return qstrcmp(data.name, name) < 0; } -static bool get_named_rgb(const char *name, QRgb *rgb) +static bool get_named_rgb(const char *name_no_space, QRgb *rgb) { - RGBData x; - x.name = name; - RGBData *r = (RGBData*)bsearch(&x, rgbTbl, rgbTblSize, sizeof(RGBData), rgb_cmp); - if (r) { + QByteArray name = QByteArray(name_no_space).toLower(); + const RGBData *r = qBinaryFind(rgbTbl, rgbTbl + rgbTblSize, name.constData()); + if (r != rgbTbl + rgbTblSize) { *rgb = r->value; return true; } diff --git a/src/network/socket/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp index dbf443e..f6ebcfb 100644 --- a/src/network/socket/qnativesocketengine_win.cpp +++ b/src/network/socket/qnativesocketengine_win.cpp @@ -918,11 +918,12 @@ QNetworkInterface QNativeSocketEnginePrivate::nativeMulticastInterface() const } #endif - struct in_addr v = { 0 }; + struct in_addr v; + v.s_addr = 0; QT_SOCKOPTLEN_T sizeofv = sizeof(v); if (::getsockopt(socketDescriptor, IPPROTO_IP, IP_MULTICAST_IF, (char *) &v, &sizeofv) == -1) return QNetworkInterface(); - if (v.s_addr != 0 && sizeofv >= sizeof(v)) { + if (v.s_addr != 0 && sizeofv >= QT_SOCKOPTLEN_T(sizeof(v))) { QHostAddress ipv4(ntohl(v.s_addr)); QList<QNetworkInterface> ifaces = QNetworkInterface::allInterfaces(); for (int i = 0; i < ifaces.count(); ++i) { @@ -1037,7 +1038,7 @@ bool QNativeSocketEnginePrivate::nativeHasPendingDatagrams() const bool result = false; fd_set readS; FD_ZERO(&readS); - FD_SET(socketDescriptor, &readS); + FD_SET((SOCKET)socketDescriptor, &readS); timeval timeout; timeout.tv_sec = 0; timeout.tv_usec = 5000; @@ -1332,7 +1333,7 @@ int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool selectForRead) co memset(&fds, 0, sizeof(fd_set)); fds.fd_count = 1; - fds.fd_array[0] = socketDescriptor; + fds.fd_array[0] = (SOCKET)socketDescriptor; struct timeval tv; tv.tv_sec = timeout / 1000; @@ -1346,12 +1347,12 @@ int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool selectForRead) co // Windows needs this to report errors when connecting a socket ... fd_set fdexception; FD_ZERO(&fdexception); - FD_SET(socketDescriptor, &fdexception); + FD_SET((SOCKET)socketDescriptor, &fdexception); ret = select(0, 0, &fds, &fdexception, timeout < 0 ? 0 : &tv); // ... but if it is actually set, pretend it did not happen - if (ret > 0 && FD_ISSET(socketDescriptor, &fdexception)) + if (ret > 0 && FD_ISSET((SOCKET)socketDescriptor, &fdexception)) ret--; } @@ -1378,16 +1379,16 @@ int QNativeSocketEnginePrivate::nativeSelect(int timeout, memset(&fdread, 0, sizeof(fd_set)); if (checkRead) { fdread.fd_count = 1; - fdread.fd_array[0] = socketDescriptor; + fdread.fd_array[0] = (SOCKET)socketDescriptor; } memset(&fdwrite, 0, sizeof(fd_set)); FD_ZERO(&fdexception); if (checkWrite) { fdwrite.fd_count = 1; - fdwrite.fd_array[0] = socketDescriptor; + fdwrite.fd_array[0] = (SOCKET)socketDescriptor; // Windows needs this to report errors when connecting a socket - FD_SET(socketDescriptor, &fdexception); + FD_SET((SOCKET)socketDescriptor, &fdexception); } struct timeval tv; @@ -1401,7 +1402,7 @@ int QNativeSocketEnginePrivate::nativeSelect(int timeout, #endif //... but if it is actually set, pretend it did not happen - if (ret > 0 && FD_ISSET(socketDescriptor, &fdexception)) + if (ret > 0 && FD_ISSET((SOCKET)socketDescriptor, &fdexception)) ret--; if (readEnabled) @@ -1410,8 +1411,8 @@ int QNativeSocketEnginePrivate::nativeSelect(int timeout, if (ret <= 0) return ret; - *selectForRead = FD_ISSET(socketDescriptor, &fdread); - *selectForWrite = FD_ISSET(socketDescriptor, &fdwrite); + *selectForRead = FD_ISSET((SOCKET)socketDescriptor, &fdread); + *selectForWrite = FD_ISSET((SOCKET)socketDescriptor, &fdwrite); return ret; } diff --git a/src/plugins/codecs/kr/qeuckrcodec.cpp b/src/plugins/codecs/kr/qeuckrcodec.cpp index 1246164..0fbd2a0 100644 --- a/src/plugins/codecs/kr/qeuckrcodec.cpp +++ b/src/plugins/codecs/kr/qeuckrcodec.cpp @@ -67,11 +67,6 @@ #include "qeuckrcodec.h" #include "cp949codetbl.h" -#include <stdlib.h> - -#if defined(Q_OS_WINCE) -# include <qfunctions_wince.h> -#endif QT_BEGIN_NAMESPACE @@ -3402,11 +3397,6 @@ QByteArray QCP949Codec::_name() return "cp949"; } -int compare_ushort(const void *a, const void *b) -{ - return *(unsigned short *)a - *(unsigned short *)b; -} - /*! \reimp */ @@ -3434,10 +3424,8 @@ QByteArray QCP949Codec::convertFromUnicode(const QChar *uc, int len, ConverterSt *cursor++ = (j >> 8) | 0x80; *cursor++ = (j & 0xff) | 0x80; } else { - unsigned short *ptr = (unsigned short *)bsearch(&ch, cp949_icode_to_unicode, 8822, - sizeof(unsigned short), compare_ushort); - - if(!ptr) { + const unsigned short *ptr = qBinaryFind(cp949_icode_to_unicode, cp949_icode_to_unicode + 8822, ch); + if (ptr == cp949_icode_to_unicode + 8822) { // Error *cursor++ = replacement; ++invalid; diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp index 3e77779..445a3ac 100644 --- a/src/sql/drivers/odbc/qsql_odbc.cpp +++ b/src/sql/drivers/odbc/qsql_odbc.cpp @@ -391,7 +391,7 @@ static QString qGetStringData(SQLHANDLE hStmt, int column, int colSize, bool uni // colSize-1: remove 0 termination when there is more data to fetch int rSize = (r == SQL_SUCCESS_WITH_INFO) ? colSize : lengthIndicator/sizeof(SQLTCHAR); fieldVal += fromSQLTCHAR(buf, rSize); - if (lengthIndicator < (unsigned int)colSize*sizeof(SQLTCHAR)) { + if (lengthIndicator < SQLLEN(colSize*sizeof(SQLTCHAR))) { // workaround for Drivermanagers that don't return SQL_NO_DATA break; } @@ -432,7 +432,7 @@ static QString qGetStringData(SQLHANDLE hStmt, int column, int colSize, bool uni // colSize-1: remove 0 termination when there is more data to fetch int rSize = (r == SQL_SUCCESS_WITH_INFO) ? colSize : lengthIndicator; fieldVal += QString::fromUtf8((const char *)buf.constData(), rSize); - if (lengthIndicator < (unsigned int)colSize) { + if (lengthIndicator < SQLLEN(colSize)) { // workaround for Drivermanagers that don't return SQL_NO_DATA break; } diff --git a/tests/auto/qdatetime/tst_qdatetime.cpp b/tests/auto/qdatetime/tst_qdatetime.cpp index 1841487..851e1ee 100644 --- a/tests/auto/qdatetime/tst_qdatetime.cpp +++ b/tests/auto/qdatetime/tst_qdatetime.cpp @@ -705,12 +705,12 @@ void tst_QDateTime::addSecs_data() } // Year sign change - QTest::newRow("toNegative") << QDateTime(QDate(1, 1, 1), QTime(0, 0, 0)) + QTest::newRow("toNegative") << QDateTime(QDate(1, 1, 1), QTime(0, 0, 0), Qt::UTC) << -1 - << QDateTime(QDate(-1, 12, 31), QTime(23, 59, 59)); - QTest::newRow("toPositive") << QDateTime(QDate(-1, 12, 31), QTime(23, 59, 59)) + << QDateTime(QDate(-1, 12, 31), QTime(23, 59, 59), Qt::UTC); + QTest::newRow("toPositive") << QDateTime(QDate(-1, 12, 31), QTime(23, 59, 59), Qt::UTC) << 1 - << QDateTime(QDate(1, 1, 1), QTime(0, 0, 0)); + << QDateTime(QDate(1, 1, 1), QTime(0, 0, 0), Qt::UTC); // Gregorian/Julian switchover QTest::newRow("toGregorian") << QDateTime(QDate(1582, 10, 4), QTime(23, 59, 59)) |