summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib
Commit message (Collapse)AuthorAgeFilesLines
...
* Skip tst_QProcess::processesInMultipleThreads under QEMUKari Oikarinen2018-05-142-0/+5
| | | | | | | | | | | | | | tst_QProcess hangs sometimes in QEMU. Based on my experiments in a debug VM the offending test seems to be processesInMultipleThreads(), since that was were I was able to reproduce the hanging in. Since the whole test executable hangs, blacklisting is not enough, so skip the test. Task-number: QTBUG-67760 Change-Id: I34f8852be955a8612deac22b369f68d79a139d11 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* QJsonDocument: Avoid overflow of string lengthsJüri Valdmann2018-05-142-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The added test case contains the binary JSON equivalent of ["ž"] with the modification that the string's length has been set to INT_MAX. In Value::usedStorage this length is used through the pointer d like so s = sizeof(int) + sizeof(ushort) * qFromLittleEndian(*(int *)d); Because 2 * INT_MAX is UINT_MAX-1, the expression as a whole evaluates to 2, which is considered a valid storage size. However, when converting this binary JSON into ordinary JSON we will attempt to construct a QString of length INT_MAX. Fixed by using String::isValid instead of Value::usedStorage. This method already takes care to avoid the overflow problem. Additionally, I've tried in this patch to clarify the behavior of Value::isValid a bit by writing it in a style that is hopefully more amenable to structural induction. Finally, the test case added in my previous patch had the wrong file extension and is renamed in this one. Task-number: QTBUG-61969 Change-Id: I45d891f2467a71d8d105822ef7eb1a73c3efa67a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* tst_qresourceengine: Fix test for static MSVC buildsOliver Wolff2018-05-071-0/+6
| | | | | | | | | The test relies on the existence of qt-project.org in resources. It contains mimetype data and is automatically added. For static builds on MSVC it is only added if it is actually needed though. Change-Id: Icd1d74466607196f9b635205f7cb4d9b300ec4b8 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* tst_qresourceengine: Fix test for configurations with builtin_testdataOliver Wolff2018-05-072-1/+13
| | | | | | | | | | If builtin_testdata is present additional data ends in inside of resources so that tests can access this data when needed. The addiitonal data has to be taken into account in the resource engine's test. Change-Id: I10de6b9612ca49b314d77cfadd5b2360a5d90d53 Reviewed-by: Andre de la Rocha <andre.rocha@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* tst_qiodevice: Skip broken winrt testsOliver Wolff2018-05-071-0/+6
| | | | | | Change-Id: I399cc1aed3ee4151cf6adfd8f8780d8975604d52 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io> Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
* QJsonDocument: Validate also zero-length objectsJüri Valdmann2018-05-041-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | The added test case is the binary JSON equivalent of {"a":{"š":null}} with two modifications. First, the length of the string "š" has been corrupted to 0xFFFFFF00. Second and more import, the Base::size field of the inner object has been reset to 0. On its own the first modification would normally trigger a validation error. However, due to the second modification the Value::usedStorage for the inner object evaluates to 0, completely disabling all further validation of the object's contents. Attempting to convert this binary JSON into standard JSON will lead to the JSON writer trying to construct a QString of length 0xFFFFFF00. Fixed by validating also objects with usedStorage == 0. Task-number: QTBUG-61969 Change-Id: I5e59383674dec9be89361759572c0d91d4e16e01 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QJsonDocument: Reject objects containing themselves in binary JSONJüri Valdmann2018-05-041-0/+0
| | | | | | | | | | The added test case is a binary JSON file describing an array which contains itself. This file passes validation even though attempting to convert it to plain JSON leads to an infinite loop. Fixed by rejecting it in validation. Task-number: QTBUG-61969 Change-Id: Ib4472e9777d09840c30c384b24294e4744b02045 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QJsonDocument::fromRawData: Fix out-of-bounds accessJüri Valdmann2018-05-042-0/+1
| | | | | | | | | | | | | | This method takes a pointer+size pair, but begins reading through the pointer without first checking the size parameter. Fixed by checking the size parameter. A new test case is added with an empty binary json file. Although the test does not fail under normal conditions, the problem can be detected using valgrind or AddressSanitizer. Task-number: QTBUG-61969 Change-Id: Ie91cc9a56dbc3c676472c614d4e633d7721b8481 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Tests: Fix clang warnings about unused variables and capturesFriedemann Kleint2018-05-021-3/+0
| | | | | | | | | | | | | tst_qline.cpp(170,12): warning: unused variable 'baseB' [-Wunused-variable] ^ tst_qline.cpp(169,12): warning: unused variable 'baseA' [-Wunused-variable] tst_qheaderview.cpp(3329,14): warning: lambda capture 'this' is not used [-Wunused-lambda-capture] waitFor([this, &header, defaultSectionSize]() { return header.sectionSize(0) == defaultSectionSize; }); qheaderview.cpp(3338,14): warning: lambda capture 'this' is not used [-Wunused-lambda-capture] waitFor([this, &header, defaultSectionSize]() { return header.sectionSize(0) == defaultSectionSize; }); Change-Id: I0245a7b66d15b896e864b488f7a58e8513fbdc6c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QItemSelectionModel: More fixes for is(Column/Row)SelectedDaniel Teske2018-04-301-0/+96
| | | | | | | | | | | | | | Replace the code for isRowSelected and isColumnSelected with a much simpler algorithm for deciding if a row/column is selected. In a model with a cross-hatch of unselectable indexes, the return values of is(Column/Row)Selected would depend on the order in which the selections were done. Task-number: QTBUG-18001 Change-Id: I6aa4b1df7c07fae469a686041927fa8c42bc9b16 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* tst_QString: remove old HP aCC workaroundThiago Macieira2018-04-271-8/+0
| | | | | Change-Id: I3840d727dee443318644fffd15291b1d77dca2fc Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Atomics: remove requirement for alignment equality with plain typesThiago Macieira2018-04-241-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | This was originally added so that you could replace a T with QAtomicInteger<T> in the same class and still keep ABI. However, for legacy reasons, on 32-bit x86, types larger than 4 bytes keep an old 1990s alignment of only 4 bytes, but modern std::atomic<T> for those 8- byte types enforces an alignment of 8 bytes. Therefore, the requirement to keep alignment is not possible to guarantee. In other words: you may not replace T with QAtomicInteger<T> or std::atomic<T> and assume no ABI breakages in all platforms. This is a requirement to implement atomicity. An 8-byte type aligned to only a 4-byte boundary could cross a 16-byte boundary or, worse, cross a cacheline boundary. Crossing the 16-byte boundary could be bad on some processors, but crossing the cacheline boundary (addresses ending in 0x3C, 0x7C, 0xCC and 0xFC, or 4 out of 64 possible addresses or 6.25%) is always bad: the CPUs cannot guarantee an atomic load or store operation. See also <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71660>. Task-number: QTBUG-67858 Change-Id: If90a92b041d3442fa0a4fffd15283e4615474582 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* tst_QFile: Don't expect Windows HANDLE equality in nativeHandleLeaks()Kari Oikarinen2018-04-231-4/+0
| | | | | | | | | | | That check is flaky on Windows. It doesn't seem to be testing Qt functionality. I also don't see CreateFile2() documentation mentioning any guarantees that opening the same file twice would give the same HANDLE each time. Change-Id: Ica2e60571ae9fc39bf822803a2a9dd6add8323d7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* tst_qdir: Fix absoluteFilePath for winrtOliver Wolff2018-04-161-0/+3
| | | | | | | | The drive has to be defined for every Windows configuration (also including winrt). Change-Id: I94a3131b8aec20cda97dc78f55b1d87aa10240e4 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* tst_QEventLoop: Remove unconditional qWait()Kari Oikarinen2018-04-101-1/+0
| | | | | | Task-number: QTBUG-63992 Change-Id: I9d9e3966252f01cded489313561641e1c0292b91 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* Revise dates of Pacific/Kiritimati's day-skip transitionEdward Welbourne2018-04-061-2/+2
| | | | | | | | | | | | | The TZ database has recently revised its ccount of when they skipped a day to cross the international date line, from skipping Jan 1st 1995 to skipping December 31st 1994. So Move the before-days check to December 30th; and correct the Feb 2nd that was meant to be Jan 2nd (and does need to remain so, for compatibility with systems with out of date data). Task-number: QTBUG-67497 Change-Id: I5b9483c553205817f995f91793662a5a85e03192 Reviewed-by: Liang Qi <liang.qi@qt.io>
* QMimeDatabase: fix assert when fetching data for invalid mimetypeDavid Faure2018-04-061-0/+2
| | | | | | | | | The Q_ASSERT(mimePrivate.fromCache) at qmimedatabase.cpp:218 which I added in commit 7a5644d648, was being triggered when calling comment() for invalid mimetypes such as db.mimeTypeForName(""). Change-Id: I8037041a4b435d2a5ba24ec94b7858e38b2f0bf2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* tst_QLocale: Avoid manual deletesKari Oikarinen2018-04-061-14/+19
| | | | | | | | | Also use data-driven test to reduce duplication. Change-Id: I9516e52267cb3c7b239030fd73dbbf23ac8f52f7 Reviewed-by: Sami Nurmenniemi <sami.nurmenniemi@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Kludge QLocale test order to fix fall-out from setDefault()Edward Welbourne2018-04-051-10/+28
| | | | | | | | | | | This makes an irreversible global change: tests that do it will mess with other tests. So make sure they're all last. This required splitting up one test; and revealed another that secretly depended on being run with C as default locale. Task-number: QTBUG-67276 Change-Id: Ic24ef48b2c9bd5c37c1f11260b437628019624ca Reviewed-by: Kari Oikarinen <kari.oikarinen@qt.io>
* Hide global qtlogging.ini from autotestKai Koehne2018-04-052-0/+2
| | | | | | | | | | Do not let a global qtlogging.ini interfere with an autotest. This works around an issue on Ubuntu 17.10 Task-number: QTBUG-67385 Change-Id: I0d02835eb7a561b43fe0b98f4383c170c6d51303 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Joni Jäntti <joni.jantti@qt.io>
* tst_QStateMachine: Don't use unconditional waitsv5.11.0-beta3Kari Oikarinen2018-04-041-2/+5
| | | | | | | | Instead use QSignalSpy to wait directly for the expected events. Change-Id: I319302ea7177fe690b5d885347c505454904518e Reviewed-by: Sami Nurmenniemi <sami.nurmenniemi@qt.io> Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* tst_QThread: Use QTRY_VERIFY instead of qWaitsKari Oikarinen2018-04-031-6/+2
| | | | | | | | | | These two places were sort of manually implementing QTRY_VERIFY except that they never time out. Change-Id: I136e6c7400194327c0475c6acfc019825ccec1b5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Sami Nurmenniemi <sami.nurmenniemi@qt.io>
* tst_QFutureWatcher: Avoid unconditional qWait()sKari Oikarinen2018-04-031-22/+24
| | | | | | | | | | | | | | | Use QSignalSpy::wait or QTRY_VERIFY instead. This shaved off ~200 ms of the running time of the test and is more reliable. Some unconditional qWait()s still remain in this test. They are giving an opportunity for the wrong thing to happen and thus are not waiting for any specific condition to be fulfilled. Task-number: QTBUG-63992 Change-Id: I25a4470fe8d6a5b8b5039b3ed77321d24faa1707 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Sami Nurmenniemi <sami.nurmenniemi@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Animation: Fix case where QEasingCurve::valueForProgress returns nanSvenn-Arne Dragly2018-03-261-0/+70
| | | | | | | | | | | | | | | | Previously, we would divide by zero in BezierEase::findTForX if factorT3 was zero when solving the cubic equation. This change fixes the problem by adding solutions for the special cases where the cubic equation can be reduced to a quadratic or linear equation. This change also adds tests that cover cases where the equation becomes quadratic, linear or invalid. Task-number: QTBUG-67061 Change-Id: I2b59f7e0392eb807663c3c8927509fd8b226ebc7 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* fixup oversight in rvalue overloads of operator+=() and operator<<()Eric Lemanissier2018-03-262-9/+73
| | | | | | | ammends 4dee5446bee9c7417bf6f5dc44294a0b7238a9ba Change-Id: Ia0ca27644eb71815a93d6e76681b8a9e61a4e7ab Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* tst_QWinEventNotifier: fix flakinessAlex Trotsenko2018-03-231-3/+7
| | | | | | | | | | | | | disableNotifiersInActivatedSlot(disable_signaled2) fails, if a signaled state of the event #2 is detected prior to the event #1. In this case, we get a timeout on waiting for event #1 which was disabled by the first notification. So, accept a disabled state of the notifier in condition for successful exit from the loop. Change-Id: I8a2fe76f8ec9362556d1ca1fe0be39a93ed58977 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Blacklist tst_QProcess::softExitInSlots on WindowsKari Oikarinen2018-03-231-0/+3
| | | | | | | | Task-number: QTBUG-66903 Task-number: QTBUG-66216 Change-Id: I4a36d6f4b980f016e11fd7a8840dbc60a2964e83 Reviewed-by: Sami Nurmenniemi <sami.nurmenniemi@qt.io> Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* QSemaphore: fix deadlock when the woken up thread wakes up anotherThiago Macieira2018-03-191-0/+69
| | | | | | | | | | | | 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>
* QIpAddress: reject IPv6 addresses with more than 4 hex digitsThiago Macieira2018-03-161-3/+5
| | | | | | | | | | | | | | | 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>
* Make sure QDir::absoluteFilePath("/dir") includes a drive on MSEdward Welbourne2018-03-121-6/+12
| | | | | | | | | | | | | | | 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>
* add missing tests of rvalue overloads for QVarLengthArray and QVectorv5.11.0-beta2Eric Lemanissier2018-03-102-2/+25
| | | | | | | they were missing in dd58ddd5d97f0663d5fafb7e81bff4fc7db13ba7 Change-Id: I52a2f855ead7716f8fe887524b27d4bd258f43d3 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Allow use of template class instances inheriting from a Q_GADGET in QmlNils Jeisecke2018-03-101-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* QLocale: Update the system private on QLocale default constructor if neededAlbert Astals Cid2018-03-021-0/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* qstringapisymmetry: Fix XML parsing failing on invalid encodingsFriedemann Kleint2018-03-021-4/+18
| | | | | | | | | | | | Evaluating testlib's XML output in COIN would fail with: "XML syntax error on line 7520: invalid UTF-8" for the toLatin1() tests due to some Latin1/UTF8 mixup. Add a helper function to convert the data to plain ASCII. Task-number: QTQAINFRA-1797 Change-Id: I1c64878d4c2a67b8c2689905b5ffe6707b5963c1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* tst_QLibrary: Ensure installation order of testdata libsKari Oikarinen2018-03-022-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This test executable was not flaky in the normal sense that when run, it sometimes passes and sometimes fails. Instead, in some builds it would fail consistently and in some builds it would pass consistently. The first test to fail was version(ok00, default to last version) which gives "mylib" as the library name and -1 as the library version. The description implies that QLibrary selects the biggest or last used version when given -1. However, versions less than 0 are not used at all. Instead the loading uses only the name to select the library. Change the description to match. So why did the test sometimes pass, sometimes fail? The test uses two library projects lib and lib2 which install two different major versions of libmylib. That includes the symbolic links: libmylib.so -> libmylib.so.1.0.0* libmylib.so.1 -> libmylib.so.1.0.0* libmylib.so.1.0 -> libmylib.so.1.0.0* libmylib.so.1.0.0* libmylib.so -> libmylib.so.2.0.0* libmylib.so.2 -> libmylib.so.2.0.0* libmylib.so.2.0 -> libmylib.so.2.0.0* libmylib.so.2.0.0* The key thing being that both set the libmylib.so symbolic link. In a multithreaded installation it's undefined which happens to set the link last. The test code expected libmylib.so to point to libmylib.so.2.0.0. Ensure that by building and installing lib2 after lib. Task-number: QTBUG-66722 Task-number: QTBUG-66216 Change-Id: Ic513c772902273049c28e43fc1d83d550aafcd23 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* JSON: remove braces from UUID text representationsThiago Macieira2018-03-021-0/+2
| | | | | | | | | [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/+20
| | | | | | | For compatibility with other parsers that may expect it to be so. Change-Id: I56b444f9d6274221a3b7fffd150cd66390f98fd5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* QMimeDatabase: fix regression in alias resolvingDavid Faure2018-02-281-0/+25
| | | | | | | | | | | | 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>
* Fix thread_local testSamuli Piippo2018-02-231-1/+1
| | | | | | | | If _Thread_local is used on a block-scope declaration, it must be combined with either static or extern to decide linkage. Change-Id: I228b3520767197c6cdf5134ff5a666ab2aca33ea Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* tst_QMimeDatabase: detect executables as shared libraries tooThiago Macieira2018-02-211-1/+3
| | | | | | | | | | | | | | | | | They can be, if compiled with -Wl,-pie. Example: $ file /usr/bin/ping /usr/bin/ping: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0 And you can't detect via the interpreter, since libraries can have them too: $ file /lib64/libc-2.26.so libQt5Core.so.5.11.0 /lib64/libc-2.26.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2 libQt5Core.so.5.11.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.17.0 Change-Id: I940917d6763842499b18fffd15143bb80ce0e531 Reviewed-by: David Faure <david.faure@kdab.com>
* Merge remote-tracking branch 'origin/5.10.1' into 5.11Liang Qi2018-02-191-1/+7
|\ | | | | | | | | | | | | Conflicts: src/plugins/sqldrivers/psql/qsql_psql.cpp Change-Id: I070b455078b41e75c46562fcea5676d6218cd00c
| * QString: fix comparisons to null strings in ucstricmpThiago Macieira2018-02-041-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | qmetatype: add '-bigobj' flag to Windows ICC buildsAlexander Shevchenko2018-02-151-1/+1
| | | | | | | | | | | | | | | | Fix 'Too many segments for object format' errors for (Debug) builds using Windows ICC. Change-Id: Ie48f43199948477c426d0a4e557f039eda129b22 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | qsettings: add Advapi32 lib to Windows ICC buildsAlexander Shevchenko2018-02-151-1/+1
| | | | | | | | | | | | | | | | Fix 'unresolved external symbol __imp_Reg*' errors for builds using Windows ICC. Change-Id: I99cb6d53c45cadb31b5675182753f168a7bf4ea3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.10' into 5.11Liang Qi2018-02-151-4/+60
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * \ Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-02-021-0/+1
| |\ \ | | |/ | |/| | | | | | | | | | | | | Conflicts: tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp Change-Id: Ia28ea4f29d308ba3aa16c2a86ffc57049c6ea590
| * | Revert "QVariant: convert QDateTime and QTime to string with milliseconds"Thiago Macieira2018-02-011-8/+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>
| * | Fix asserts and crashes in QWinEventNotifier activation loopJoerg Bornemann2018-01-261-0/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | QVariant: convert QDateTime and QTime to string with millisecondsThiago Macieira2018-01-251-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | This way, it's lossless. Change-Id: I5e421e32396d44e4b39efffd150b744e40fff3a1 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | Remove dead code from tst_qwineventnotifier.cppJoerg Bornemann2018-01-251-4/+0
| | | | | | | | | | | | | | | | | | | | | The idx member of EventWithNotifier is unused. Change-Id: I0f5aacaaad4b4e82c57ff7bb020586944014f139 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>