summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
* Android: Refactor exception checking in qjni.Christian Strømme2014-07-071-19/+16
| | | | | | | | | In places where we call java/jni functions that can throw exceptions, we check and clear the exception, if necessary. This change moves the "checking" code into a single (private) function. Change-Id: Ic3de2be51305972b096e1ed0a477e341eb5d9404 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* Attempt to work with Visual Studio in -Za (strict ANSI) modeThiago Macieira2014-07-051-6/+15
| | | | | | | | | | | | | | | Visual Studio always treats enum values as signed int, even when the value doesn't fit in a signed int (like 0x80000000 or larger than 32- the tags themselves are still signed. That causes ambiguity in creating a QFlag from an enum value. Visual C++ defines __STDC__ in C mode, but we have no macro in C++ mode. Also note that the Windows SDK headers don't compile in -Za mode. Task-number: QTBUG-39700 Change-Id: Ia943cef37ac1f539bd461c3c18200b0c365c72b3 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* qDebug: fix data race in qt_message_printDavid Faure2014-07-011-23/+19
| | | | | | | | | | | | | | The setting of (static) messageHandler to qDefaultMessageHandler if null was happening in multiple threads simultaneously, so it needs synchronization. Used an atomic pointer in case qInstallMessageHandler is called from a thread, but more importantly, initialized the static vars right away. Improve auto test to ensure that qInstallMessageHandler(0) still sets the default message handler. Change-Id: I70335af38c1d28a1cdba1df8a79c6006f227422e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix annoying warning from ICC 14 on WindowsThiago Macieira2014-07-011-2/+2
| | | | | | | | | | | | | | | | | It says that defining a macro that does defined() is not portable. The solution implemented for MSVC 2008 and earlier does work, however, and is portable to all compilers (the parentheses around the macro are unnecessary). Incidentally, this makes d98004cd2f33e8147cff9f3cb203fdef5e6dd00e actually work: Q_CC_MSVC wasn't defined at that point in the file, so that change had never taken effect. warning #3199: "defined" is always false in a macro expansion in Microsoft mode Task-number: QTBUG-39597 Change-Id: Iaa2895e7f63d97c439090043435a2b8d2f185c3a Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Doc: Various \note fixes in Qt namespace documentation.Jerome Pasion2014-07-011-19/+19
| | | | | | | | | | | -changed \note and \warning to "Note:" and "Warning:" -\note and \warning split the table. -other minor \note changes Task-number: QTBUG-36972 Change-Id: I88042550cd01101e7225cd3b5f4e0115ea102ea9 Reviewed-by: Liang Qi <liang.qi@digia.com> Reviewed-by: Martin Smith <martin.smith@digia.com>
* Doc: Fix typo in QScopedValueRollbackKevin Funk2014-06-301-1/+1
| | | | | Change-Id: I9835b284d6bba5f7632cae6b179c6c1b08265e5c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Don't compare the target methods for SlotObject connectionsThiago Macieira2014-06-291-1/+1
| | | | | | | | | | | | | | When a new-style connection is created (a SlotObject), we don't store the method offset since there isn't one. So don't try to read it. Qt::UniqueConnection only applies to old-style connections, since we can't compare the slot objects for equality. In any case, an old-style connection and a new style will never be considered equal. Task-number: QTBUG-39927 Change-Id: I10a39a7bc97a2ec9509a0708038cc491bcc67329 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Elias Probst <mail@eliasprobst.eu>
* Add a comment stating QMutex::isRecursive should be made const in Qt6Olivier Goffart2014-06-261-1/+1
| | | | | Change-Id: I452b0764790112c59af77bc8d95f403ff37cbc4a Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Fix QMutex documentation saying some function are static while they are notOlivier Goffart2014-06-262-8/+8
| | | | | | | | | | | | | qdoc only see a fake QMutex class (the same as the one built in bootstrap) But that fake QMutex had static member while the normal QMutex class has non static member. QMutexLocker::mutex is also a const function in the real QMutexLocker Task-number: QTBUG-38522 Change-Id: I220434ffc6a9e990029f770e2536ecb55b4e2182 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* WinRT: no read-only paths in QStandardpaths::writableLocationOliver Wolff2014-06-261-5/+14
| | | | | | | | | | | As FontsLocation, HomeLocation and RuntimeLocation are read- only on WinRT WritableLocation should return empty strings in these cases. In addition all the other options were added to the switch statement in writableLocation. Task-number: QTBUG-38581 Change-Id: Iab994556844e713c6fa02028a0ec824ecb5ee82b Reviewed-by: Andrew Knight <andrew.knight@digia.com>
* Mark behavior of QFileInfo::absoluteFilePath as undefined in corner casesKai Koehne2014-06-251-3/+4
| | | | | | | | | | | | | | | | | | | The current description was misleading, since e.g. QFileInfo().absoluteFilePath() will always return an empty string. QFileInfo("").absoluteFilePath() however will return the current working directory ... Instead of documenting these small quirks we should rather mark the exact behavior as undefined, like we already do for absolutePath(). Change-Id: I70358413528429c2c2dee37480ad018aae26e6cb Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Fix logging file location docsFrederik Gladhorn2014-06-251-2/+2
| | | | | | | The location mentioned in the docs didn't work because it was wrong. Change-Id: I80bbc16bfecc5662317f9963299981266b95bba8 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Fix QRingBuffer::readPointerAtPosition()Alex Trotsenko2014-06-241-1/+1
| | | | | | | Fix condition to allow return a valid pointer when head != 0. Change-Id: I5215f7dfc44924016c2d9b67ab2d9935b5164d7a Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Make the fetchAndAddRelaxed function a member templateThiago Macieira2014-06-241-2/+2
| | | | | | | | | | This way, no compiler can instantiate it at class instantiation time. We don't want them to do it for T that are function pointers (sizeof functions is meaningless). Change-Id: I6d5044bd5d9ffd0d347f1f38ab33c64213730788 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: David Faure <david.faure@kdab.com>
* Doc: qInstallMessageHandler cannot return 0.David Faure2014-06-241-2/+1
| | | | | | | | | The commit 124044613dde9a9596312102ca377bc74ed08165 (in Nov 2011) changed that: the first call will return the builtin message handler, not 0. Change-Id: I535ad69639f2341f9b664a6e2e7b12802ae785e0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Fix memory leaks in QFseventsFileSystemWatcherEngineErik Verbruggen2014-06-241-0/+28
| | | | | | | | Sprinkle in some NSAutoReleasePools. Task-number: QTBUG-38637 Change-Id: I0cb42d9d1cbcc4e9d273d0d43e4925fc02885b66 Reviewed-by: Eike Ziller <eike.ziller@digia.com>
* Print the reason why SetWindowsHookEx failed.Sérgio Martins2014-06-231-1/+3
| | | | | | Task-number: QTBUG-14301 Change-Id: I4733a57034259b013864bf91aba6cce2f411ab48 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Move most of the QLibraryPrivate initialization to its constructorThiago Macieira2014-06-213-16/+32
| | | | | | | | | | | | | | This commit moves the setting of the loadHints to inside the constructor or to QLibraryStore::findOrCreate (which is under a mutex). This avoids data race conditions with two threads asking for the same plugin at the same time, with different load hints. This also opportunistically moves the setting of the error message for empty file names. Task-number: QTBUG-39642 Change-Id: I497a41781d10e407d6420116a0b05fdfe2b548de Reviewed-by: David Faure <david.faure@kdab.com>
* Fix data race on QLoggingCategory when using qDebug from multiple threadsDavid Faure2014-06-203-19/+56
| | | | | | | setEnabled() would race with isEnabled()/isDebugEnabled()/etc. Change-Id: I2004cba81d5417a634b97f5c2f98d3a4ab71770d Reviewed-by: David Faure <david.faure@kdab.com>
* fix QT_SUPPORTS macro with msvc2008Oswald Buddenhagen2014-06-201-1/+5
| | | | | Change-Id: I70ffba51d2672574d7cefc3cb44724341cd86f22 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Attempt to fix intel compiler build error.Jędrzej Nowacki2014-06-191-1/+1
| | | | | | | | | qtbase/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h(625): error #68: integer conversion resulted in a change of sign Task-number: QTBUG-39678 Change-Id: Ifb175bdcad820aa58cc0a1bcf6985a164376baf5 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QEventDispatcherWin32: Use a shared class name for the message window.Friedemann Kleint2014-06-191-9/+45
| | | | | | | | | | | Introduce a global-static struct storing atom and class name for the message window to be shared between threads. This prevents RegisterWindow()/UnregisterWindow() of different threads (using exec()) from interfering and silently failing. Task-number: QTBUG-39471 Change-Id: I9bc1106a41f64749c55825a96973921bb831458f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Fix compilation with the Intel compiler on certain systemsThiago Macieira2014-06-191-1/+3
| | | | | | | | We require the intrinsics from immintrin.h, so include it unconditioanlly with that compiler. Change-Id: I4a17676631f9d89e2d22e486f40c9b177ca06c1e Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Bump versionOswald Buddenhagen2014-06-181-2/+2
| | | | Change-Id: I867c3b4aecc82095e65bd7f820e7fe6d14005705
* Merge remote-tracking branch 'origin/stable' into 5.3Sergio Ahumada2014-06-142-5/+15
|\ | | | | | | Change-Id: Icd073d40ce10ab4733b997036815795dd3fbaac1
| * Fix case insensitive comparisons using QCollatorLars Knoll2014-06-122-5/+15
| | | | | | | | | | | | | | | | | | | | | | | | In ICU the strength parameter decides whether a comparison is case sensitive or not. Fix mac comparison code. It can't have worked before. Added some basic automated testing for QCollator. Change-Id: I2646c464fd22ccd3a93c461fa3dba4bd1d4c7b4b Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* | QProcess: Handle spurious socket notifications for stdout and stderrThiago Macieira2014-06-123-10/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Unix systems where the GUI event dispatcher uses a notification system for socket notifiers that is out of band compared to select(), it's possible for the QSocketNotifier to activate after the pipe has been read from. When that happened, the ioctl(2) call with FIONREAD might return 0 bytes available, which we interpreted to mean EOF. Instead of doing that, always try to read at least one byte and examine the returned byte count from read(2). If it returns 0, that's a real EOF; if it returns -1 EWOULDBLOCK, we simply ignore the situation. That's the case on OS X: the Cocoa event dispatcher uses CFSocket to get notifications and those use kevent (and, apparently, an auxiliary thread) instead of an in-thread select() or poll(). That means the event loop would activate the QSocketNotifier even though there is nothing to be read. Task-number: QTBUG-39488 Change-Id: I1a58b5b1db7a47034fb36a78a005ebff96290efb Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Don't try to read from invalid file descriptors in QProcessThiago Macieira2014-06-123-6/+10
| | | | | | | | | | | | | | | | | | strace reveals that we do ioctl(-1, FIONREAD) and get EBADF. The only case where this could happen is inside _q_processDied, which calls the read functions without checking if the pipe is still open. Change-Id: I67637fc4267be73fc03d40c444fdfea89e1ef715 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | QProcessPrivate: merge the functions dealing with stdout and stderrThiago Macieira2014-06-125-131/+54
| | | | | | | | | | | | | | Simplifies the code. Change-Id: I4b3a6e725eb245d3531d1d11d959fb3b85862778 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Rename QProcessPrivate::destroyChannel to closeChannelThiago Macieira2014-06-125-20/+20
| | | | | | | | | | | | | | | | | | | | | | The QProcessPrivate::Channel object contains some structures that may survive the closing of the pipe, so calling this function "destroy" is incorrect. Let it be just the closing. For symmetry, the createChannel() function is renamed to openChannel(). Change-Id: I2899214c6e4c25835390b10ccf3931315a91589e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Move the QProcessPrivate Windows objects into QProcessPrivate::ChannelThiago Macieira2014-06-123-67/+56
| | | | | | | | | | | | | | Similar to the previous commit, this simplifies the code. Change-Id: Ia02b9b5174b4bc6fd04ec2534231b7db5fc914fa Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Move the QProcessPrivate channel buffers into QProcessPrivate::ChannelThiago Macieira2014-06-124-40/+37
| | | | | | | | | | | | | | Simplifies the code. Change-Id: I70b26af69332f364d856042f114c37a70504d66f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Doc: correct the format of Q_PLUGIN_METADATA macro in sample codesZhang Xingtao2014-06-121-1/+1
|/ | | | | Change-Id: I464a0c0a590b0b90cf0fe7ccd448ee9bf704bd4f Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Merge "Merge tag 'v5.3.0' into HEAD" into refs/staging/stableSergio Ahumada2014-06-111-3/+3
|\
| * Merge tag 'v5.3.0' into HEADOswald Buddenhagen2014-06-111-3/+3
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt 5.3.0 Release Conflicts: src/plugins/platforms/cocoa/qcocoaintegration.mm Manually removed call to setWindow in src/plugins/platforms/cocoa/qcocoawindow.mm to follow 1ac0f953ba70ceda76e90918ab4ae7ebe2339969. Change-Id: Ieddedf4cd7b47effce6b6865fb9c48df6c5838a7
| | * Update Copyright year in commercial nag screensv5.3.0Kai Koehne2014-05-141-3/+3
| | | | | | | | | | | | | | | Change-Id: I70420c44c018dbe733a50badb7f9f7f419459f7a Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Fix QT_NO_SETTINGS build in QLibraryInfo.Steffen Imhof2014-06-101-2/+2
| | | | | | | | | | | | | | | | | | | | | One reference to QSettings was only guarded by QT_BOOTSTRAPPED. Change-Id: I2f9761ee88b4a45edb16054fdba3c3f11fec12ff Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | | Doc: QAtomicInteger first appeared in Qt 5.3David Faure2014-06-091-0/+1
| | | | | | | | | | | | | | | Change-Id: I900e5b0ec8291d34685cb545540a5a9f54551d05 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Fix documentation about QStringLiteralKai Koehne2014-06-061-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The fallback for QStringLiteral in case C++11 features are not enabled is QString::fromUtf8(), not QLatin1String(). Also, the result of a QStringLiteral expression _is_ a QString. Change-Id: Ib9c2f4c13fff237de3acb2e0f64027bacea6271c Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Android: Use exceptionCheck() function.Christian Strømme2014-06-051-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | This was the only place where we didn't use the exceptionCheck() function. Besides being more consistent, it's also more verbose if an exception occurs. Change-Id: Ib1e3dba82b0730cf189ec725f4da425d7ac85cdc Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* | | Doc: Fix undefined variable in QMetaMethod::invoke() documentationTopi Reinio2014-06-051-1/+1
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-38871 Change-Id: I5b7aef58c652d13110aa73b7856927b5ba6fea50 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | | qfreelist: fix data race on v[at].nextDavid Faure2014-06-051-5/+5
|/ / | | | | | | | | | | | | | | Detected by clang's -fsanitize=thread in tst_qcoreapplication. Task-number: QTBUG-39024 Change-Id: I60b7cece0384f89dc62ac5128faf39a4084e72e2 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Properly escape bytearray data outside the ascii range when using a codecLars Knoll2014-06-041-2/+5
| | | | | | | | | | | | | | | | | | Some codecs can't handle the range outside ascii properly and would then fail to read the data back in correctly. Task-number: QTBUG-15543 Change-Id: I4c02921e787a939eeec0c7a11603b5896d756aef Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | remove HSTRING instancesMaurice Kalinowski2014-06-034-15/+15
| | | | | | | | | | | | | | | | | | | | | | HSTRING needs to be released or handles will be leaked. Instead use HString which takes care of resource management on its own. Task-Number: QTBUG-38115 Change-Id: I2c767776c1f22f45acd8dd77b693f30d63d894b9 Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* | add Windows 8.1 overrideMaurice Kalinowski2014-06-021-0/+2
| | | | | | | | | | Change-Id: Id8aa549e4ba5d8b550405823e26bb68da9403ced Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* | Fix QSysInfo::macVersion for OS X minor versions greater than 9.Jake Petroules2014-05-311-2/+3
| | | | | | | | | | | | | | | | | | | | gestaltSystemVersion's encoding only has room for a single version digit. Thus, OS X 10.10 would previously have been detected as OS X 10.9 (Apple's comments in the header even warn against this). Change-Id: I41c35b1507d39e2958a9aaffaa8c48ac380f61d9 Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Update the QSignalBlocker docs to show actual behaviorThiago Macieira2014-05-301-1/+1
| | | | | | | | | | | | | | | | | | QSignalBlocker resets to the previous state, which might have already been a blocked signal state. Task-number: QTBUG-39352 Change-Id: I918cc6ea346755b940e027cee5d6704824fbba32 Reviewed-by: David Faure <david.faure@kdab.com>
* | QAbstractProxyModel::sibling: treat row/column as offsets within the proxyJan Kundrát2014-05-291-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt5 allows QAIM subclasses to reimplement the sibling() method. Unfortunately, the default QAbstractProxyModel's reimplementation differs in behavior to what the Qt4 version was doing. In particular, the Qt4 version used to use the row and column as positions within the proxy model, while the Qt5 version mistakenly does this at the level of source model. This is arguably broken; the caller asks for a sibling of the proxy index, not for a sibling within the proxy model. This change makes the QAPM::sibling work explicitly in the same way as the Qt4 code behaved. The reimplementation of QAbstractProxyModel::sibling was introduced in 9dfba89c28bbff3316cb7aed6c07f90c0f2d5a22. It was subsequently fixed with commit 999109866dbd350a29cc70815d0c772545c85746 not to return indexes from the source model, but the logic was still different from the Qt4 version. [ChangeLog][QtCore][QAbstractProxyModel] Fixed QAbstractProxyModel::sibling to work in the same manner as the Qt4 code used to behave. Previously, Qt5's implementation would treat the row and column as positions in the source model instead of a position in the proxy itself. Followup-to 9dfba89c28bbff3316cb7aed6c07f90c0f2d5a22 and 999109866dbd350a29cc70815d0c772545c85746 Change-Id: Ia25027b2ad9e4777ba28de2d2226d48f8cccf587 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Mark Brand <mabrand@mabrand.nl> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | Remove unused QMapNode{,Base}::minimumNodeThiago Macieira2014-05-281-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | These functions are not used anywhere. Since the classes are not documented, we're free to remove the inline functions. The implementation of the const function in QMapNode is also bogus: it discards a const qualifier. Task-number: QTBUG-39301 Change-Id: Ib8fd10a4da4b58a62cef17017ea6127c4d964325 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | UTF-8: always store the SIMD result, even if invalidThiago Macieira2014-05-271-11/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For ASCII content, this improves the throughput because the conditional is no longer on the codepath to storing, so the processor can perform the store at the same time as it's doing the movemask operation. However, the gain is mostly theoretical: benchmarking with mostly ASCII content shows the algorithm running within 0.5% of the previous result (which is noise). For non-ASCII content, we're comparing the cost of doing a 16-byte store (which may be completely overwritten) with the loop copying and shifting left. Benchmarking shows a slight gain of a few percent. Change-Id: I28ef0021dffc725a922c539cc5976db367f36e78 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>