summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
* Fix the internal QDir sortingGiuseppe D'Angelo2013-09-101-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If two items are equal according to the current sorting criterion, the sorting predicate uses the address of the items to break the tie. The problem is that the items themselves are being moved during the sort; therefore, this will break the Strict Weak Ordering that std::sort requires. For instance, suppose to be sorting case-insensitively the following array: ("b", "a", "A") Simulating a swapped-based sorting can lead to: Array before Evaluated predicate Array after ("b", "a", "A") "a" < "A" (1) ("b", "a", "A") ^ ^ ("b", "a", "A") "b" < "A" (2) ("A", "a", "b") ^ ^ ("A", "a", "b") "A" < "a" (3) (XXXXXXXXXXXXX) ^ ^ (1) True, because of the array ordering (they're equal otherwise) (2) False: swap them (3) True, because of the array ordering (they're equal otherwise) (1) and (3) say that "a" < "A" and "A" < "a", SWO gets violated, leading to undefined behavior. This problem was causing QFileSystemModel autotests failures (cf. [1]) after switching to STL algorithms instead of using qSort. The array to be ordered in that case is ("a", "c", "C"), cf. tst_QFileSystemModel::caseSensitivity. (STL algorithms are much smarter than good ol' quicksort in qSort; if we're ordering on an array which fits in a cache line, they turn to the much faster (~1 robe) insertion sort. Violating SWO with a quick sort usually just gets to a non-sorted container; insertion sort is implementable in ways that rely on SWO, otherwise they will overflow the iterator; cf. Cormen/Leiserson/Rivest and the other literature on the topic.) This commit reverts commit fa5f3a44 (in Qt 4). [1] http://testresults.qt-project.org/ci/QtBase_dev_Integration/build_01749/linux-g++_shadow-build_Ubuntu_11.10_x86/log.txt.gz Change-Id: I5d8ac0d0907675c501717969abee2816b41eca18 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Fix a typo in documentationJędrzej Nowacki2013-09-101-1/+1
| | | | | | Task-number: QTBUG-33408 Change-Id: I84729139ff40ac62b29031eb161761a8205259cc Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
* Correct type mismatches sentence in signals and slots documentation.Mitch Curtis2013-09-101-1/+3
| | | | | | | Task-number: QTBUG-15994 Change-Id: I19581ae33313de44bcb6e5eb2c06fc9e507ad101 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Doc: Fix copy+paste errors for QAbstractItemModelSze Howe Koh2013-09-081-3/+3
| | | | | Change-Id: Ia462544cc86870d9870ae1be3b4f9135c9efe45c Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Compile in strict-iterator mode under MSVCThiago Macieira2013-09-061-1/+1
| | | | | | | | | | | | | | | | MSVC doesn't like operator->() returning a pointer to non-aggregate. So we must make sure that the expanded code does not try to call it by doing: abegin->~T(); Instead, we make an implicit call to operator T*() with that static_cast<T* >. If abegin is a non-strict iterator, it's already a T*, so the static_cast is a no-op. qvector.h(645) : error C2839: invalid return type 'int *' for overloaded 'operator ->' Change-Id: I06f983bab7677cb60ef3913cdce349e26896bfb6 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Remove the size limit of QByteArray information.Leonard Lee2013-09-021-2/+0
| | | | | | | | | | The information is explaining implementation details rather than on how to use it effectively. The size limit of QByteArray may vary depending on available memory. Task-number: QTBUG-33037 Change-Id: I361316422ade3624a0c2864d93f87caeb654f4d7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMetaMethod::invoke: compare the QMetaType id of the return typesOlivier Goffart2013-08-291-2/+7
| | | | | | | | | | | | | | | | | | | | | | Since Qt5, the QMetaObject do not contains the string name of the builtin types, but only the QMetaType id. QMetaMethod::typeName convert back from the id to the string. But if the type is aliased, the string of the main type is returned. This was the case for example for qint64 which is transformed to "qlonglong". This causes a regression in QMetaType::invoke when trying to invoke a method which return an aliased type, since the string comparison would fail. Fix the problem by also comparing the metatype id. Changelog: QMetaMethod::invoke: Fix return of aliased meta type Task-number: QTBUG-33222 Change-Id: Iec7b99dcbf7b23eb818de74f413e4451ce510ac4 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Windows: Fix compilation with MinGW-64, gcc 4.8.1Friedemann Kleint2013-08-291-1/+5
| | | | | | | A definition for FILE_ID_128 was added. Change-Id: Ifdfe5da1b15a90afdf5cf09d92838a04b1cf5c19 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Revert "Fix compilation for Android ARMv5"Eskil Abrahamsen Blomfeldt2013-08-271-4/+0
| | | | | | | | | | This reverts commit 9fa1bdeeb2bca6f9ba370fce594a47a066a7e81a which is no longer needed because the Android NDK now contains a toolchain without the bug for which it was a work-around. Task-number: QTBUG-31051 Change-Id: I601ba2fccb927ee7e818644de4474700e2eec8f1 Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Soft-deprecate obscure feature on property getters returning pointersThiago Macieira2013-08-231-1/+1
| | | | | | | | | | | | | | | | moc actually generates the right code for getters returning a pointer to the type in question, or a reference to the type (a reference, one would assume, does not require code changes). However, the same extension is not valid for the setter: it can't receive the new value by pointer. Therefore, let's soft-deprecate the feature by removing its existence from the documentation. Task-number: QTBUG-33091 Change-Id: I27844213e051ec7fafeb4744089a0653aea6f1f3 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Doc: Add Q_OS_ANDROID macroTakumi Asaki2013-08-231-0/+7
| | | | | Change-Id: If428f0b7c1540e809f756f426a6d222acea5d310 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Add json/savegame example.Mitch Curtis2013-08-228-3/+18
| | | | | | | | | | | | There wasn't any example documentation besides json.html, which doesn't actually describe usage of the various QJson* classes. This also makes each QJson* class page link back to json.html. Change-Id: If5ad6493d2728df0cec7bdbbc5790f0b755f816c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* CMake: Allow specifying a TARGET in invocations of macros.Stephen Kelly2013-08-211-29/+51
| | | | | | | | | | | | Forward-port of 9ce60ff509c4ff27fe861fc5b2080f50897a68c4 (Qt4Macros: Allow specifying a TARGET in invokations of macros., 2013-02-26) from cmake.git. This causes the INCLUDE_DIRECTORIES and COMPILE_DEFINITIONS to be used from the specified target when running moc. Change-Id: I868a35ade3c6b059e64d226291cf2046709d86d4 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Populate INTERFACE_LINK_LIBRARIES property in the cmake files.Stephen Kelly2013-08-211-0/+5
| | | | | | | | This is new in CMake 2.8.12 and replaces the old properties matching IMPORTED_INTERFACE_LINK_LIBRARIES_<CONFIG>. Change-Id: I5d4c454972f2535f6792e95718c73d80c56ac24c Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Specify maximum array size for QByteArray.Leonard Lee2013-08-211-0/+2
| | | | | | Task-number: QTBUG-33037 Change-Id: I3f39b1498fc70614402fca2281ffbd1a6ec4cf3f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Tidy up QJsonObject documentation.Mitch Curtis2013-08-201-19/+19
| | | | | | Change-Id: I445e0573c3c4fdb86ef535299a4eb299e225c15d Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Use correct mask constant in the Windows event dispatcher.Friedemann Kleint2013-08-201-1/+14
| | | | | | | | | | | | Mask out QS_TOUCH, QS_POINTER when running a VS2012-compiled binary on pre-Windows 8 systems. Task-number: QTBUG-32257 Task-number: QTBUG-28513 Task-number: QTBUG-29097 Task-number: QTBUG-29435 Change-Id: I33ce3a659a234cb04d3b5ae9d668d193d681be7f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Revert "Disable precision timers when running MSVC2012 code on pre-Windows 8."Friedemann Kleint2013-08-201-8/+0
| | | | | | | | | | This reverts commit aa1b4c0943187d82e0c313b93559e99226a9c75a. It turns out that the bug is caused by a different mask constant in Windows 8 which should not take effect in pre-Windows 8. Change-Id: I1ad502262dae42856c07d48ee3bc9dc032ab379b Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Rename template parameter: "I" -> "II"Sze Howe Koh2013-08-181-9/+9
| | | | | | | | | | C99 defines the "I" macro in complex.h. qobjectdefs_impl.h can be indirectly included in user code, which raises the possibility of a name clash if the user's compiler supports C99 and the user includes complex.h Change-Id: Ie79ec7baf2d49a34b66a01556c7e57324303dc04 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* add configure -extprefix optionOswald Buddenhagen2013-08-151-1/+1
| | | | | | | | | | | | | | | | | this adds the possibility to put the actual qt installation outside the sysroot it is configured for. this makes it possible to install an x-built qt without "polluting" the sysroot, which makes it possible to have read-only sysroots, and multiple qt builds for one sysroot. -prefix is the location within the sysroot as seen by the target itself, and gets "burned" into QLibraryInfo in QtCore. -extprefix is the location in the host file system and gets "burned" into QLibraryInfo in qmake. if it is not specified, it defaults to the sysrootified prefix, which is the previous behavior. Task-number: QTBUG-26680 Change-Id: Ia43833c4e27733159afeb8c8b9b2d981378d0cd1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Ensure that bootstrapped users of QCryptographicHash only use SHA-1Thiago Macieira2013-08-152-1/+9
| | | | | | | This reduces code size quite considerably in the bootstrapped tools. Change-Id: I7475650b1936e93afcf327cb4def2f7763609179 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Don't compile MD4, MD5, SHA-2 and SHA-3 into qmakeThiago Macieira2013-08-151-1/+1
| | | | | | | | We just need one digest algorithm, any algorithm, to generate a somewhat unique identifier. SHA-1 will suffice. Change-Id: I3cb26bf866d616df3ef32feace10934f19daa1a6 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Fix crash in QProcess::waitForStarted() on Unix.Christian Strømme2013-08-131-3/+3
| | | | | | | | | | | | Invoking waitForStarted() on a QProcess before or after an unsuccessful call to start() (e.g., with an empty command), would execute FD_SET with an invalid file descriptor and cause the process to abort. The bug can be reliably reproduced on OSX. Task-number: QTBUG-32958 Change-Id: Id25b7781168489281645e21571361ca1a71d43e3 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Reset the QItemSelectionModel when its model is reset.Stephen Kelly2013-08-131-0/+2
| | | | | Change-Id: I12af41adb18a2ecf8825b23d5715766dcae55436 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* un-confuse lupdate: make #ifdef'd braces symmetricalOswald Buddenhagen2013-08-121-3/+2
| | | | | | | | | as a side effect, this also de-duplicates the code, which is good in its own right. Change-Id: I504cb518276fdf610639c3337e3842570b97815f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: John Layt <jlayt@kde.org>
* Remove OS X unsupported warning.Jake Petroules2013-08-101-4/+0
| | | | | | | No other platform has such a warning and it really is not important. Change-Id: Ib85a536b6fcf9d7f15cd8b0779db7f6cfaec339a Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Forward the correct compilers to the actual cmake tests.Stephen Kelly2013-08-091-0/+8
| | | | | | | | | | This was missing from commit 87db2fdef (Use the compilers used by Qt for the CMake tests., 2013-07-19) Task-number: QTQAINFRA-609 Change-Id: Ief1f0ed11d9f6268c636dc739fbf7945c5dee2c8 Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Merge branch 'release' into stableSergio Ahumada2013-08-091-1/+1
|\ | | | | | | Change-Id: I5e94c4f01564df633c9925561ebb0b553bd31a2e
| * Enable qsrand() on builds without thread-safe posixEskil Abrahamsen Blomfeldt2013-08-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | The #ifdef clause in qsrand() needs to be the same as in qrand(). Otherwise, we will store the seed in thread-local storage in qsrand(), never passing it into srand(), and then we'll use regular rand() because the rand_r() function is missing, thus always using a random seed of 1 in all applications. Task-number: QTBUG-32781 Change-Id: I00240a1954ae746b87b031f3a0470a6cbe747571 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Android: Fix QCoreApplication::applicationDirPath()Eskil Abrahamsen Blomfeldt2013-08-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Disable the code path which queries /proc/<pid>/exe for the current executable path, as from a Q_OS_ANDROID perspective, this executable will be the Dalvik binary. Instead we get the application directory via the fallback, by looking in argv[0], since this is set to the location of the application binary. Task-number: QTBUG-32852 Change-Id: Ib93050f41cbd47aaf71284e8bfa6a3247131d978 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | qobject: Do not destroy slot objects inside a lockDario Freddi2013-08-071-8/+26
| | | | | | | | | | | | | | | | | | This prevents deadlocks in case the destructor re-enters. (Example: a functor containing a QSharedPointer of a QObject) This also fixes a leaked slot object in disconnectHelper. Change-Id: Ia939790e3b54e64067b99540974306b4808a77f2 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Fix clang detection of thread_local variablesThiago Macieira2013-08-061-1/+1
| | | | | | | | | | | | | | | | The "0" must have been added because there was no __has_feature for the feature back in the day. Now it exists. Change-Id: I50f0544ae82a8be54a8d26da400e31c1906dad9e Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | QMimeDatabase: Fix handling of duplicate mimetype definitions (2/2).David Faure2013-08-031-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | 7721c3d27c6a fixed the case where two similar definitions are in the same directory. This commit fixes the case where two similar definitions are in different directories, both in the search path (GenericDataLocation). If the file extension gives us the same mimetype twice, there's no conflict, i.e. no reason to fallback to determination from contents. Change-Id: I72c56004b6d5e88964159e53ec160ce8b06c2264 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Mark qt5_use_modules as obsolete.Stephen Kelly2013-07-311-0/+12
| | | | | | | | | | | | | | | | | | | | Forward-port of cb7f32f5b861fe115fa71f64500a5cbb0b643f1b (Mark qt4_use_modules and qt4_automoc as obsolete., 2013-07-04) from cmake.git. Change-Id: I0c24408ef06bc93eb0e55108cf4eab2f8cbd19cb Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | QByteArray: Remove some reinterpret_cast<>.Friedemann Kleint2013-07-302-4/+4
| | | | | | | | | | | | | | | | | | | | Fix warning: QByteArray(QByteArrayDataPtr dd) constructor warning C4946: reinterpret_cast used between related classes: 'QArrayData' and 'QTypedArrayData<T>'. Task-number: QTBUG-32559 Change-Id: I06356902f79ed6bf784127ff0c3a97d3263a25da Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* | Symbol for max number of arguments in QMetaMethod::invoke()Illya Kovalevskyy2013-07-302-0/+10
| | | | | | | | | | | | | | | | | | | | | | QMetaMethod::invoke(..) takes fixed number of arguments for execution. Adding preprocessor macros which literaly equals this number would be useful for writing some generic code. Task-number: QTBUG-31821 Change-Id: Ia2faf291f3f7df44a47c3cf18f5cd587d37d7d2e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Add support for Q_OS_FREEBSD_KERNEL and documentThiago Macieira2013-07-301-5/+16
| | | | | | | | | | | | | | | | | | | | Also clarify documentation for OSes with variants. Q_OS_ANDROID should have been called Q_OS_LINUX_ANDROID and Q_OS_BLACKBERRY should have been Q_OS_QNX_BLACKBERRY. Task-number: QTBUG-15402 Change-Id: I3a34d52a1c0ebb8eb73284bdf198443c209a5fd4 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Remove a left over cast that is now semantically incorrect.Jake Petroules2013-07-301-1/+1
| | | | | | | | | | | | | | | | CFPropertyListRef is a typedef for void*, which is why this code was compiling OK prior to this change. Change-Id: I78d65652a76721434056bd9f6d011917e2864125 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Work around msvc /clr LNK2005 errors with QListRichard Browne2013-07-301-12/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes a compatibility with Qt 5 and Microsoft C++ /clr mode. The QList copy constructor defines a Cleanup class that causes LNK2005 errors. It is a compiler problem, but the patch is simple. The use of QT_TRY/QT_RETHROW instead of a Cleanup class is more consistent with other Qt code, so is arguably preferable even without the compiler bug. Task-number: QTBUG-31949 Change-Id: I1acfbae1924f0a52ffb8d9722b52e01b61edd42e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Correct QHash::values() documentation.Mitch Curtis2013-07-291-1/+1
| | | | | | | | | | Change-Id: Ia19bd0578591f77e5aee1c7e3e619ba97754f384 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* | Merge remote-tracking branch 'origin/release' into stableSergio Ahumada2013-07-261-6/+2
|\| | | | | | | Change-Id: Ic5a232260a6c8ee71f9ff91e820f54c36ab6b15a
| * Doc: Update documentation of Qt::HANDLETopi Reinio2013-07-241-6/+2
| | | | | | | | | | | | | | | | | | Qt::HANDLE is always defined as 'void *' on Qt 5.0 Task-number: QTBUG-32469 Change-Id: I3f0f2b19e65d54c88604e1cb65b5791c456b3003 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* | Fix crashes when invoking toVariant() on empty QJsonValue objects.Friedemann Kleint2013-07-241-2/+6
| | | | | | | | | | Change-Id: I51cd114e862c6fad564484e990348f324ad56ab9 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* | Bump Qt version to 5.1.2Sergio Ahumada2013-07-231-2/+2
|/ | | | | Change-Id: Ibe3e6a37a874b75ea9a20e0a9ed8aa5f21bf6be2 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* document that validity of exitCode() depends on exitStatus() == NormalExitOswald Buddenhagen2013-07-221-3/+7
| | | | | Change-Id: Ied16681f08c59de16ac365b9ae76c2eacf6bc29c Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Ensure that the user codecs are listed in QTextCodec::availableCodecsThiago Macieira2013-07-211-4/+4
| | | | | | | | | Codecs registered by creating new QTextCodec instances should be listed there. Task-number: QTBUG-32500 Change-Id: I56c00e0d6bbfef55a6cbd571bcf9aa2cf333ef3a Reviewed-by: David Faure <david.faure@kdab.com>
* Changed digia contact details to */legal, updated licensesTeemu Kaukoranta2013-07-201-1/+1
| | | | | | | | Scripts are available in internal mkdist repo. Added license tags, updated licenses and copyrights/contacts Change-Id: Ibc734275f3000987eaa4f5c57f19d4e1fda2c479 Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Fix warning about using QString's const char* constructor on MacThiago Macieira2013-07-201-1/+2
| | | | | Change-Id: I20ca50fdcdcfb075ad317247f147e4eb007a0c44 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* Fix incomplete override of QIODevice::open in QProcess and QLocalSocketThiago Macieira2013-07-202-22/+38
| | | | | | | | | | | | | | | | | | | The rule for a new override is that it must still work if the old implementation is called. The catch is that any class that derives from QProcess and isn't recompiled will still have QIODevice::open in its virtual table. That is equivalent to overriding open() and calling QIODevice::open() (like the tests). In Qt 5.0, QProcess::start() called QIODevice::open directly, not the virtual open(), so there's no expectation that a user-overridden open() be called. With that in mind, simply fix QProcess::start to not call the virtual open at all. Similarly with QLocalSocket, the calls to open were always non-virtual. Task-number: QTBUG-32284 Change-Id: I88925f0ba08bc23c849658b54582744997e69a4c Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* fix endless loop in QProcess/Win drainOutputPipesJoerg Bornemann2013-07-181-2/+4
| | | | | | | | | | | Commit 568f82fba397e06a26b4fd40f074e4432d02d248 was incomplete. If drainOutputPipes detected some readyRead it wouldn't end the loop. Task-number: QTBUG-32354 Change-Id: I4e594f1e148abe9ef36c047a55eee1b22fd5064b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>