summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
* Modernize the "regularexpression" featureUlf Hermann2018-03-2014-90/+75
| | | | | | | | | | | | | Use QT_CONFIG(regularexpression), disentangle it from QT_BOOTSTRAPPED, switch it off in the bootstrap build, remove the #ifdefs from qregularexpression.{h|cpp}, and add QT_REQUIRE_CONFIG(regularexpression) to the header. qregularexpression.{h|cpp} are already correctly excluded in tools.pri if !qtConfig(regularexpression). Change-Id: I21de154a6a118b76f99003d3acb72ac1e220d302 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* QSharedDataPointer: use swap-and-move in the move constructorThiago Macieira2018-03-191-2/+10
| | | | | | | | | | This makes the pointer that was in the moved-into object be destroyed before the return of this function (if the reference count was 1), instead of letting it live in the moved-from object. Task-number: QTBUG-66322 Change-Id: I3debfc11127e4516b505fffd151209292bd3adaa Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QSemaphore: add minor optimization for 64-bit Linux systemsThiago Macieira2018-03-191-0/+7
| | | | | | | | Since we won't use the high bit of the low 32-bit word at all, we don't need the AND with 0x7fffffff either. Just cast. Change-Id: I72f5230ad59948f784eafffd151aa5a7dee995db Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QSemaphore: fix deadlock when the woken up thread wakes up anotherThiago Macieira2018-03-191-43/+88
| | | | | | | | | | | | When the thread that got woken up by release() is supposed to release() to wake up another thread, we were deadlocking. This happened because we cleared the bit indicating that there was contention when the first release(). Instead of storing a single bit, we now store the number of threads waiting. Task-number: QTBUG-66875 Change-Id: I72f5230ad59948f784eafffd15193873502ecba4 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove src/corelib/arch, merging with src/corelib/threadThiago Macieira2018-03-195-6/+4
| | | | | | | There is no more architecture-specific code. Change-Id: Ie9d9215342d449c48a11fffd151d11411cd73fc7 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Atomics: remove qatomic_msvc.hThiago Macieira2018-03-193-501/+2
| | | | | | | | | No longer needed. The comment about missing constexpr support is incorrect: MSVC 2015 does have constexpr issues, but they don't affect our use of std::atomic. Change-Id: Ie9d9215342d449c48a11fffd151d11208137f00d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Atomic: silence MSVC warning in the generic fetchAndSubThiago Macieira2018-03-191-0/+3
| | | | | | | | | MSVC atomics still use the generic version, instead of qatomic_cxx11.h. The implementation of fetchAndSub is implemented on top of fetchAndAdd, but produced a warning with unsigned types. Change-Id: I72f5230ad59948f784eafffd151aa53435b75298 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* q{,Utf8}Printable: avoid creating a copy of a QStringThiago Macieira2018-03-182-2/+9
| | | | | | | | | | | | | | | | | We have this QString() constructor call to permit things that convert to QString but aren't QString to be used in qPrintable, like a QStringBuilder-powered fast operator+ expression, like: qPrintable(string1 + ": " + string2) Unfortunately, it meant that we unnecessarily created a QString copy if the input was already QString. Change-Id: Iecab8770aa5840aba8edfffd1516bc94cec791a9 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* qglobal.h: compile Q_UINT64_C in C modeThiago Macieira2018-03-171-0/+5
| | | | | | | This is used by qfloat_f16c.c → qsimd_p.h → qsimd_x86_p.h. Change-Id: I359898686ce545f69847fffd151c785237a54b94 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* QIpAddress: reject IPv6 addresses with more than 4 hex digitsThiago Macieira2018-03-161-1/+4
| | | | | | | | | | | | | | | Matches glibc commit 9a0cc8c1bd7645bf3c988890ffb59639c07a5812. [ChangeLog][QtCore][QUrl] Fixed a bug in parsing IPv6 addresses with more than 4 hex digits in a component. [ChangeLog][QtNetwork][QHostAddress] Fixed a bug in parsing IPv6 addresses with more than 4 hex digits in a component. [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=9a0cc8c1bd7645bf3c988890ffb59639c07a5812 Change-Id: I2701038131d91eb108aebb3bec16278e4efe3de2 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* Disable statx(2) and renameat2(2) system calls on AndroidThiago Macieira2018-03-141-7/+16
| | | | | | | | | | | | | | | | | Many Android systems come with a locked down system call list, causing the statx(2) system call to fail with an unexpected error code or by delivering a signal to the application. Because of the signal, we can't do runtime detection... This is not our bug: it's obviously a mistake in the SECCOMP rules in Android. But we work around the issue. Unfortunately, because of a few manufacturers who can't configure their rules properly, everyone will suffer. Task-number: QTBUG-64490 Change-Id: I39332e0a867442d58082fffd1507a49415917384 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
* QByteArray::setRawData(): don't null-terminate initialization from nullptrOswald Buddenhagen2018-03-141-1/+0
| | | | | | | | it's antithetical to do that, as raw data is documented to be not null- terminated. QString doesn't, either. Change-Id: I7ded83a09f64e747a248f9bdac2a364032aae4c0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Android: Fix possible crashBogDan Vatra2018-03-141-1/+1
| | | | | Change-Id: I3362dffe0f30196a2a1eabcffe6cb3b2d52a7785 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* doc: Make fromStdVariant() appear in the QVariant docsMartin Smith2018-03-142-2/+2
| | | | | | | | | | | | This function was not appearing in the QVariant docs because the \fn command was wrong and because clang was not seeing the declaration in qvariant.h in the first place. With this update, the function does appear in the docs, but it's signature is not correct because clang can't find a definition for std::variant<Types...>, which probably means it doesn't have the most recent declarations in the std namespace. Change-Id: I7912ff333e5d4a8619461dd3ab7ee34bcd8f2289 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Remove needless #include <sys/random.h> from qrandom.cppEdward Welbourne2018-03-131-3/+1
| | | | | | | | | | | Tripped over by Alexei Fedotov and brought to light on the developer list; Thiago says it's a left-over from before reworking to actually use getentropy() instead of getrandom(); it should no longer be needed. Change-Id: Id09b0628e58fa62170a0f0da35b2b121f3fb0172 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Make sure QDir::absoluteFilePath("/dir") includes a drive on MSEdward Welbourne2018-03-121-1/+35
| | | | | | | | | | | | | | | QDir::isAbsolutePath(name) thinks any path starting with a slash is absolute; however, to return a valid absolute path, we need to put a drive prefix onto such a name. So use QFileSystemEntry::isAbsolute() for that check (it believes in the need for a drive, or UNC prefix) and handle the absolute-but-for-drive case when it arises. Add a regression test and make related changes to existing tests. Task-number: QTBUG-50839 Change-Id: Id5d2b2586bb1423fa2d9375a298a4bb5241cffe0 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* document that QueryWhatsThis is a QHelpEventSergio Martins2018-03-111-1/+1
| | | | | Change-Id: I4240c32287530df6162c07a27b865fb4176103db Reviewed-by: Martin Smith <martin.smith@qt.io>
* Allow use of template class instances inheriting from a Q_GADGET in QmlNils Jeisecke2018-03-101-10/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | The Q_GADGET macro cannot be used in templates. It can however be useful to derive a template class from a Q_GADGET enabled base class to benefit from type safety features in C++ (e.g. the class could represent an id or handle for some C++ type). For proper wrapping of a QVariant with a gadget value in a QJSValue, the QMetaType::IsGadget flag must be set for the registered template instance type - which does not happen prior to the fix because IsGadgetHelper requires qt_check_for_QGADGET_macro to be defined in the registered class but not in an ancestor class - in other words: The class must declare Q_GADGET. To overcome this, IsGadgetHelper/IsPointerToGadgetHelper can now differentiate between a Q_GADGET flagged class (allowing automatic registration) and a derived class, e.g. a template class (forcing Q_DECLARE_METATYPE to be used explicitly). [ChangeLog][QtCore][QMetaObject] It is now possible to use template class instances inheriting from a Q_GADGET in Qml Task-number: QTBUG-66744 Change-Id: I7632ad45cff79fa422b3f852ca0b963f35fab155 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Doc: improve QScopedPointer::reset() documentationMitch Curtis2018-03-081-1/+4
| | | | | | | | - Fix grammar - Mention take() Change-Id: I3bde229755549230ad3d0962da6eeb164a060fb1 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Add missing rvalue overloads of operator+=() and operator<<()Christian Ehrlicher2018-03-074-0/+41
| | | | | | | | | | | | | | | They were forgotten when the overloads for append()/push_back() were added in Qt 5.6 [ChangeLog][QtCore][QVarLengthArray] Added missing rvalue overload of operator+=() and operator<<() [ChangeLog][QtCore][QVector] Added missing rvalue overload of operator+=() and operator<<() Change-Id: I20fedfba2bf282773bd1f9cf2c8ec06f05896a7d Reviewed-by: Martin Smith <martin.smith@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* logging: Clarify and document how we look for the presence of a consoleTor Arne Vestbø2018-03-073-53/+164
| | | | | | | | | | | | | The privately exported qt_logging_to_console() function has been renamed to shouldLogToStderr, and exported in the QtPrivate namespace for QtTestLib. [ChangeLog][Important behavior changes][Logging (including qDebug and qWarning)] The QT_LOGGING_TO_CONSOLE environment variable has been deprecated. Use the more specific QT_ASSUME_STDERR_HAS_CONSOLE or QT_FORCE_STDERR_LOGGING, depending on your usecase. Change-Id: Ie29228eeac3b700c3de94fee022d5d66d9b5c210 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* QLocale: Update the system private on QLocale default constructor if neededAlbert Astals Cid2018-03-021-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When first starting an Android app we have invocation order issue, to load the platform plugin we create the default QLocale (needed by the resource locator code to see if :/qt/etc/qt.conf exists) so when the android platform plugin loads and creates its own QSystemLocale, the QLocale defaultLocalePrivate is already created and pointing to globalLocaleData which means that systemData won't be called and thus the code that triggers the call to QLocalePrivate::updateSystemPrivate won't be called when calling QLocale(). I thought of two ways of fixing this, one was calling QLocalePrivate::updateSystemPrivatea() from the QAndroidSystemLocale constructor, but giving the responsibility to not break things to the plugin seems a little fragile, so making the check on QLocale() seems better. Without this patch an Android app doing QApplication app(argc, argv); qDebug() << QLocale().name(); qDebug() << QLocale().name(); qDebug() << QLocale::system().name(); qDebug() << QLocale().name(); would print "" "" "ca_ES" "ca_ES" now it correctly prints "ca_ES" the four times. Task-number: QTBUG-41385 Change-Id: I2cf419f59aa008fa3aca11295fe7d42c40bcc32e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* JSON: remove braces from UUID text representationsThiago Macieira2018-03-021-0/+9
| | | | | | | | | [ChangeLog][QtCore][QJsonValue] fromVariant() conversion now converts from QUrl and QUuid using special encoding forms to ensure best JSON compatibility. Change-Id: I56b444f9d6274221a3b7fffd150cdc5ca1f87ff1 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* QJsonValue: use the fully-encoded form of a URL in fromVariant()Thiago Macieira2018-03-021-0/+11
| | | | | | | For compatibility with other parsers that may expect it to be so. Change-Id: I56b444f9d6274221a3b7fffd150cd66390f98fd5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Find PCRE2 via pkgconfigR.J.V. Bertin2018-03-011-0/+1
| | | | | | | | | | | This avoids issues when using dependencies installed in a custom or dedicated $prefix, when PCRE2 is configured to install its headers in their own directory under instead of directly in $prefix/include. Task-number: QTBUG-66355 Change-Id: Ia99464820600282d61237e5bcff38101d2c9684b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* QMimeDatabase: fix regression in alias resolvingDavid Faure2018-02-281-2/+2
| | | | | | | | | | | | The refactoring to support multiple providers broke alias resolving (e.g. "text/directory" would be an invalid mimetype, instead of being resolved to "text/vcard"). The unittest didn't catch it because most of it was running with a single mime directory (and therefore a single provider, in the new model). Fixed by re-running a number of test methods once we have a second mime directory. Change-Id: Ib5da89ba79c11ed41813b2aff4bc71c30afcde7d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Silence a GCC 8 warning in qringbufferVille Voutilainen2018-02-281-1/+1
| | | | | | | | | | | | | qtbase/src/corelib/tools/qvector.h:782:16: error: ‘void* memmove(void*, const void*, size_t)’ writing to an object of type ‘class QRingChunk’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Werror=class-memaccess] memmove(b + 1, b, (d->size - offset) * sizeof(T)); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../../../include/QtCore/5.11.0/QtCore/private/qringbuffer_p.h:1, Change-Id: I6583241223fe3fc76c0b792779993a34aa9485fe Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDate/Time,QTimeZone: Fix empty documentation section titlesFriedemann Kleint2018-02-272-5/+4
| | | | | Change-Id: I674c4bb1805a7f7bc95512b07b0278446ebe7772 Reviewed-by: Martin Smith <martin.smith@qt.io>
* Fix compile with sanitize address & undefinedBogDan Vatra2018-02-261-1/+5
| | | | | | | | | | | On Debian 9, the sanitize library exports only dlopen symbol, but it doesn't export the other ones. We need to check all dl symbols that we use, otherwise "-ldl" will not be added to the libs list. Task-number: QTBUG-64864 Change-Id: I3e62b82985348c40b8b61302ba589d5564598e18 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Reapply 1514b4e85336245ef130deca5839267dba7b2e32 on 5.11Liang Qi2018-02-231-1/+2
| | | | | | | | | | | This change amends 305dd1b61f657474d751cc3b24f58249ec21b61b, which lost 1514b4e8 and brought src/corelib/json/qjsonarray.cpp back, which got removed in c9c9adeef943d8265b2dae57ff48992c23b6725a. In a6b697ca13945a174cff9f3e9b1af1cf61c0bea5, it was moved to src/corelib/serialization/qjsonarray.cpp in 5.11. Change-Id: Ic6134a78d75a9c245934cf70a67a54c80a3e7c85 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Reapply 403343039d07812c0beee9260b291f86e14d8ac4 on 5.11Liang Qi2018-02-232-1967/+2
| | | | | | | | | | | This change amends 305dd1b61f657474d751cc3b24f58249ec21b61b, which lost 40334303 and brought src/corelib/xml/qxmlstream_p.h back. In a6b697ca13945a174cff9f3e9b1af1cf61c0bea5, it was moved to src/corelib/serialization/qxmlstream_p.h in 5.11. Change-Id: Ia1e9841b866ff49f7274b1b13fd224c0a20a017e Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* moc: Only use the init_priority attribute when targeting windowsMartin Storsjö2018-02-221-1/+1
| | | | | | | | | | | | | | | | | | | | While both GCC and the GCC compatible clang support this attribute in general, GCC doesn't support it when targeting macOS, ending up with errors like these: error: 'init_priority' attribute is not supported on this platform This error isn't a property of the platform itself though, since clang supports the attribute just fine on macOS. The attribute is only used to work around an issue with dllimport on windows, so limit its use to that platform, to avoid issues with it potentially being unsupported on platforms other than macOS as well. This fixes compiling with GCC for macOS. Change-Id: I0235e6365635d73233951566c10ad869b26a0fc6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Revert "JSON doc: update the RFC we link to"Thiago Macieira2018-02-211-1/+1
| | | | | | | | | This reverts commit 71090f09509d52451e68b33e3e26807822849721. Changing the link was wrong because we do not actually comply with the new RFC. Task-number: QTBUG-66470 Change-Id: I940917d6763842499b18fffd15147cb93c27b7f4 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove left over json/qjsonarray.cppFriedemann Kleint2018-02-211-1238/+0
| | | | | | | Complements a6b697ca13945a174cff9f3e9b1af1cf61c0bea5. Change-Id: I96697624aa65a5a45ce91ceaf0e156fd112a8ed0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix some qdoc-warnings for 5.11Friedemann Kleint2018-02-211-1/+1
| | | | | | | | | | | | | | | | Rename example savegame and its snippets following a6b697ca13945a174cff9f3e9b1af1cf61c0bea5. Fix: /qtbase/examples/corelib/serialization/savegame/doc/src/savegame.qdoc:28: warning: Cannot find file 'json/savegame/savegame.pro' or 'json/savegame/savegame.qmlproject' qtbase/examples/corelib/serialization/savegame/doc/src/savegame.qdoc:98: (qdoc) warning: Cannot find file to quote from: 'json/savegame/level.cpp' json qtbase/src/network/ssl/qsslconfiguration.cpp:889: warning: Undocumented parameter 'name' in QSslConfiguration::setBackendConfigOption() qtbase/src/corelib/tools/qbitarray.cpp:314: warning: No such parameter 'len' in QBitArray::fromBits() Change-Id: If59512873ca2116b89490927fdbf9ea1d8b237a8 Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: Martin Smith <martin.smith@qt.io>
* Merge "Merge remote-tracking branch 'origin/5.10.1' into 5.11" into ↵Tony Sarajärvi2018-02-201-9/+0
|\ | | | | | | refs/staging/5.11
| * Merge remote-tracking branch 'origin/5.10.1' into 5.11Liang Qi2018-02-191-9/+0
| |\ | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/sqldrivers/psql/qsql_psql.cpp Change-Id: I070b455078b41e75c46562fcea5676d6218cd00c
| | * QString: fix comparisons to null strings in ucstricmpThiago Macieira2018-02-041-9/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 8f52ad9fe084eee26869e4a94a678076845a6f58 ("ucstricmp: compare null and empty strings equal") made sure empties and nulls would compare equally, but may have broken the null vs non-empty comparison (which was not tested). The commit message also said that it expected all callers to handle null before calling into those functions, but that's not the case for QStringView created from a null QString: the incoming "a" pointer was null. So just remove the checks for null pointers and rely on the size checks doing the right thing. [ChangeLog][QtCore][QString] Fixed a regression from 5.9 that caused comparing default-constructed QStrings to be sorted after non-empty strings. Task-number: QTBUG-65939 Change-Id: I56b444f9d6274221a3b7fffd150c83ad46c599b6 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | macOS: Remove qDebug silencer in qthread_unix.cppTor Arne Vestbø2018-02-191-13/+0
|/ / | | | | | | | | | | | | | | | | | | It was added by Sam back in 2007, and we've removed other instances of the same pattern since then. It doesn't make any sense today. Change-Id: I0f3cb299e312648fd9dc96c639dab4c77fcb48c7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | fix missing __builtin_mul_overflow for Windows ICCAlexander Shevchenko2018-02-151-1/+1
| | | | | | | | | | | | | | | | Complete 43c44d05ca6af4ec78c1dea84635375a637ff80d to cover builds using Windows ICC. Change-Id: I5f4d62f17b54835a58f3002744574c514cce5e39 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge "Merge remote-tracking branch 'origin/5.10' into 5.11" into ↵Liang Qi2018-02-156-14/+46
|\ \ | | | | | | | | | refs/staging/5.11
| * \ Merge remote-tracking branch 'origin/5.10' into 5.11Liang Qi2018-02-156-14/+46
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/corelib.pro src/corelib/global/qrandom.cpp src/network/access/qhttpnetworkrequest_p.h src/plugins/platforms/cocoa/qcocoamenu.mm src/plugins/platforms/cocoa/qcocoansmenu.mm src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/cocoa/qnsview.mm src/plugins/platforms/offscreen/qoffscreenintegration.h src/widgets/kernel/qaction.cpp src/widgets/widgets.pro Done-with: Andy Shaw <andy.shaw@qt.io> Change-Id: Ib01547cf4184023f19858ccf0ce7fb824fed2a8d
| | * | QSaveFile: Check for EINTR in fsync()/fdatasync()5.10Thiago Macieira2018-02-111-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtCore][QSaveFile] Fixed an issue that would cause QSaveFile::commit() to fail if Unix signals were delivered at the same time. Task-number: QTBUG-66268 Change-Id: I3debfc11127e4516b505fffd151148e70662cd5e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: David Faure <david.faure@kdab.com>
| | * | Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-02-074-5/+8
| | |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/cocoa/qcocoamenu.mm Change-Id: I11c5f8466c5b51e13e5ef6a8fc6e3f2dd79122a7
| | * | | QString: Add whitespace handling note to number conversion functionsAndre Hartmann2018-02-051-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Copied from QLocale::toFloat and companions. Change-Id: Ic3a13a87cfc1ce34de9dd7d7e7b303ef103c384a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * | | QString: Wrap extra-long comment lineAndre Hartmann2018-02-051-1/+4
| | | |/ | | |/| | | | | | | | | | | | | Change-Id: I77c95e99fd23eb914d7e86ee003d7f487c57f0f0 Reviewed-by: Martin Smith <martin.smith@qt.io>
| | * | Revert "QVariant: convert QDateTime and QTime to string with milliseconds"Thiago Macieira2018-02-011-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit ab1e50757454b5afda2f6dec52d2eb16a32d4798. That was supposed to be a minor behavior change, but ends up having visible effects such as QtXmlPatterns xs:dateTime type now reporting sub-second fractions. So we're reverting in 5.10 and re-applying in 5.11. Change-Id: I741e49459c9a688c1c329d6cbd521cd4a0b2aa84 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * | Android: Don't rely on QDir::homePath() to get the application directoryChristian Strømme2018-02-011-2/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the QLoggingRegistry gets called as part of the static initialization phase, it would call into Android's QStandarPaths implementation, which assumed that the HOME env. variable was already set. Since the variable isn't set before main is called, QDir::homePath() returns the root path, which would be cached and always returned. With this fix we now call Android's getFilesDir() directly, which will always return the right path. Since the font locations are also relying on an environment variable being set, we no longer cache that either. Task-number: QTBUG-65820 Change-Id: If45f3d5f0e87b808a62118ae95c31b492885646a Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
| | * | Android: Defer initialization of logging rules until qApp constructionTor Arne Vestbø2018-02-012-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Android, we load the application library, and its dependencies (Qt), on Android's main thread (thread 0), and then spin up a secondary thread (thread 1), that we call main() on. If any QObject is constructed during loading of the application library or any of Qt's libraries, via static initializers or constructor functions, we will set QCoreApplicationPrivate::theMainThread to thread 0, which will confuse Qt later on when it's being run on thread 1, and will result in a warning during QCoreApplication construction: QApplication was not created in the main() thread This situation can easily lead to a crash as well. Unfortunately logging via qDebug/qCDebug and friends will trigger this too, as they internally use QObject. Fixing the root cause of this is under investigation, but for now we will partially revert fa2a653b3b934783 for Android. The effect is that any qCDebug with a "qt.*" category before qApp construction will turn into a no-op, like it was before fa2a653b3b934783. This patch does not cover the case of a regular qDebug, or a qCDebug with a non-Qt category. Those will still produce the same symptom, as before fa2a653b3b934783. Task-number: QTBUG-65863 Change-Id: I95675731d233244530d0a2a1c82a9578d5599775 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| | * | Fix asserts and crashes in QWinEventNotifier activation loopJoerg Bornemann2018-01-262-9/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The backwards iteration was done under the assumption that the only valid modification of the winEventNotifierList in a slot connected to activated() would be the removal of the notifier itself. This is wrong. Instead, iterate forwards, like before 85403d0a, and check the index against the current list size in every iteration. This ensures that we do not run out of bounds while the list is modified. Also, retry the activation loop if the list was modified by a slot connected to activated(). This ensures that all notifiers with signaled handles are activated. Task-number: QTBUG-65940 Change-Id: I25f305463b9234f391abc51fe0628d02f49b6931 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>