summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.11' into devLiang Qi2018-05-248-52/+140
|\ | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/features/qt_common.prf src/corelib/tools/qstring.cpp src/plugins/platforms/windows/qwindowsmousehandler.cpp src/widgets/widgets/qmainwindowlayout_p.h Change-Id: I5df613008f6336f69b257d08e49a133d033a9d65
| * QLocale: only use LANGUAGE if it contradicts LC_ALL/LC_MESSAGES/LANGEdward Welbourne2018-05-231-3/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If LANGUAGE specified only the language, without any script or country, and matched the value we'd got from other environment variables, we were throwing away their knowledge of script and country, leading to falling back on the default script and country for that language, which might be at odds with what other environment variables had told us. Changed to only use LANGUAGE if it contradicts (or extends) what we would otherwise have used. Clarified some comments in the process. [ChangeLog][QLocale][Unix] When using LANGUAGE would lose information about script or country, without changing language, use the locale implied by LC_ALL, LC_MESSAGES or LANG. Prompted-by: Safa AlFulaij <safa1996alfulaij@gmail.com> Change-Id: Ie433e57ae6b995abafd05c931136cc9796494895 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Doc: Document the WA_ContentsMarginsRespectsSafeArea widget attributeVenugopal Shivashankar2018-05-231-1/+8
| | | | | | | | | | | | Task-number: QTBUG-68153 Change-Id: Ie4fa1a4e06ff5ee506e1d7788c245b7add776bd6 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
| * QTemporaryFile: Disable O_TMPFILE on AndroidThiago Macieira2018-05-221-1/+2
| | | | | | | | | | | | | | | | | | | | | | We require linkat(2) to materialize the file and that is (stupidly) filtered. See 138d34b9c8aa368dd252d0c46393816c7e372837 and QTBUG-64103. Task-number: QTBUG-68344 Change-Id: I052407b777ec43f78378fffd152fd8822761b452 Reviewed-by: BogDan Vatra <bogdan@kdab.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Fix documentation of Q_NAMESPACEOlivier Goffart2018-05-221-0/+1
| | | | | | | | | | | | | | We need to add the \relates command otherwise it won't appear in the documentation Change-Id: I134776c1528445761a7539cf687e4855d39eb7a7 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
| * qt_is_ascii: improve isAscii a little further (QUrl, QLatin1String)Thiago Macieira2018-05-201-5/+12
| | | | | | | | | | | | | | | | | | Turns out that the non-AVX2 code was beating the performance of the AVX2 because the simdTestMask function did a little too much. So just use the same VPMOVMSKB technique for it. Change-Id: I0825ff5b5f6f4c85939ffffd152f3b636ab998db Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| * Merge remote-tracking branch 'origin/5.11.0' into 5.11Qt Forward Merge Bot2018-05-181-0/+2
| |\ | | | | | | | | | Change-Id: Idfb5542f76cfd5ccda7521e529505e5a4a54c797
| | * QFileSystemEngine: don't try to use statx(2) if SYS_statx isn't definedv5.11.0-rc2v5.11.0Thiago Macieira2018-05-141-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | If glibc's <unistd.h> does not define SYS_statx but <linux/stat.h> did define struct statx and related constants, we failed to compile. Task-number: QTBUG-68205 Change-Id: I04a43ee94975482f9e32fffd151e66bbe6988554 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | Add support for QSharedPointer<cv qualified>::create()Thiago Macieira2018-05-171-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtCore][QSharedPointer] Fixed a problem that made create() on a type with const qualification fail to compile. Task-number: QTBUG-68300 Change-Id: I0825ff5b5f6f4c85939ffffd152f3e55e5b9caae Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | ucstrncmp: refactor with 32- and 8-byte loadsThiago Macieira2018-05-151-16/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First of all, this removes the UB that used to try and calculate the distance between the two strings. That's a valid technique in assembly, but dangerous in C++ and totally unnecessary. The compiler is perfectly able to generate loops with a single induction variable all on its own. Second, this commit makes the main loop use 32-byte comparisons (16 characters at a time), which is a reasonable size for strings. We use AVX2 if that's available, or an unrolled pair of 16-byte loads otherwise. After the existing 16-byte comparison, this commit inserts an 8-byte (4-character) comparison and then reduces the final, unrolled comparison to just 3 characters. Change-Id: Ib48364abee9f464c96c6fffd152e474b39e1f293 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| * | QJsonDocument: Avoid overflow of string lengthsJüri Valdmann2018-05-141-23/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | | Windows: Refactor QFSFileEngine::link()Friedemann Kleint2018-05-231-12/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | - Remove unneeded QT_CONFIG(library) - Use C++ casts - Introduce nullptr Change-Id: I0349e8a550ebd21c58d63a3ee5b1f9cfde49099f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Add attribute to indicate a widget was the target of a style sheetAaron Kennedy2018-05-232-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt already has the widget attribute WA_StyleSheet to which indicates that a widget was subject to a style sheet, but it doesn't indicate that the widget was actually affected by the style sheet. For example, an application style sheet will set the WA_StyleSheet attribute on all widgets, even if it only targets QPushButtons. The WA_StyleSheetTarget new attribute pairs with WA_StyleSheet to give this extra information. [ChangeLog][QtWidgets] Added the Qt::WA_StyleSheetTarget attribute to indicate that a widget was affected by a style sheet. Change-Id: I7cca18ddec8fbb69f294ae2ef990672a5f4f1d83 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io> Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
* | | QString::toLatin1: make the 32-byte loop to a single 32-btye loadThiago Macieira2018-05-161-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of two 16-byte loads, if AVX2 is present. Otherwise, it's exactly the same. Because of the way the SIMD instructions were extended to 256-bit in AVX2, we gain nothing doing two 32-byte loads, aside from the loop unrolling. Change-Id: Ib48364abee9f464c96c6fffd152e531925814ac2 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | | QString::toLatin1: stop using PCMPESTRMThiago Macieira2018-05-161-53/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This instruction is somewhat slow and requires a lot of inputs to be correctly set. Instead, use the PMIN trick, which does have unsigned comparison support. This commit moves the helper function to a lambda inside qt_to_latin1, to make it easier to reuse the constants in the next commit and to avoid warnings of unused static functions. Change-Id: Ib48364abee9f464c96c6fffd152e9e84f4ad3ae8 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | | QString: add a method to do a conversion to Latin1 without checkingThiago Macieira2018-05-152-36/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the input is already known to be Latin 1, we don't need to check and merge in question marks. QJsonObject already needed this code, now we can make it more efficient. I'll need the same code in CBOR. Change-Id: Ib48364abee9f464c96c6fffd152e508f078404e5 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | | QString: insert a number of 8-character SIMD loopsThiago Macieira2018-05-152-18/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't have _mm_cvtsi64_si128() (the REX.W expansion of MOVD [0F 6E]), but we do have _mm_loadl_epi64(), the SSE2 expansion of the MMX MOVQ at opcode 0F 7E. Ditto for _mm_cvtsi128_si64() and _mm_storel_epi64(). And those work even in 32-bit mode. By doing this, we can reduce the tail unrolled loops by half, reducing code size. I'm not adding these new SIMD sections to -Os builds. Change-Id: Ib48364abee9f464c96c6fffd152e405310ef67be Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | | QUtf8: add AVX2 code for isValidUtf8Thiago Macieira2018-05-151-0/+22
| | | | | | | | | | | | | | | Change-Id: I5d0ee9389a794d80983efffd152d2beca86c5779 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | | QUrl: use the SIMD ASCII-checking code from the last commitThiago Macieira2018-05-152-12/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | Improves performance a little. This is just because I can and the function is right there for the taking, as this qt_urlRecodeByteArray function is only used in deprecated QUrl code. Change-Id: I5d0ee9389a794d80983efffd152d290e570af387 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | | QString::normalized: Replace the initial US-ASCII loop with SIMDThiago Macieira2018-05-151-34/+61
| | | | | | | | | | | | | | | | | | | | | | | | We can just reuse the code I added for QtPrivate::isAscii(), adding the update to the ptr parameter in the failed case. Change-Id: I5d0ee9389a794d80983efffd152d277e2adf444d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | | Add QT_TR*_N_NOOP() macrosMateusz Starzycki2018-05-153-1/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtCore][Global] Added the QT_TR_N_NOOP(), QT_TRANSLATE_N_NOOP(), and QT_TRANSLATE_N_NOOP3() macros for numeral dependent delayed translation. Change-Id: I57c5b1ad4006267f49a57b0cbc40216b8e0399ff Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Martin Smith <martin.smith@qt.io>
* | | Merge remote-tracking branch 'origin/5.11' into devLiang Qi2018-05-144-25/+15
|\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/features/qt_module_headers.prf tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp tests/auto/widgets/kernel/qwidget/BLACKLIST Change-Id: I2a08952d28d1d0e3d73f521a3d44700ce79ff16c
| * | QByteArray::setNum: use the existing latin1 lowercasing tableThiago Macieira2018-05-131-15/+3
| | | | | | | | | | | | | | | | | | | | | Not sure this makes the code faster, but it removes two functions. Change-Id: I5d0ee9389a794d80983efffd152d830da44b1bfe Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | QString: fix off-by-one errorThiago Macieira2018-05-101-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | The check for having N valid characters is ptr + N <= end, because ptr + N == end indicates that we have exactly N characters in the string. Change-Id: I5d0ee9389a794d80983efffd152d28d5aa485ce4 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| * | Merge remote-tracking branch 'origin/5.11.0' into 5.11Qt Forward Merge Bot2018-05-091-2/+2
| |\| | | | | | | | | | Change-Id: Id6e2acd5e31c1ac858ddf1d8873a6f10694141de
| | * QSysInfo: Correct the \since for {machine,boot}UniqueId()Thiago Macieira2018-04-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | The code was written before 5.10 was released, but took long to be merged. Change-Id: If90a92b041d3442fa0a4fffd15286fe079b058e1 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| * | Fix build with GCC 8: memset/memcpy/memmove of non-trivialsThiago Macieira2018-05-091-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | qarraydataops.h:73:17: error: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct TCBPoint’; use assignment or value-initialization instead [-Werror=class-memaccess] Change-Id: I5d0ee9389a794d80983efffd152ce10eb557341f Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* | | Merge "Merge remote-tracking branch 'origin/5.11' into dev" into ↵Liang Qi2018-05-081-0/+2
|\ \ \ | | | | | | | | | | | | refs/staging/dev
| * | | Merge remote-tracking branch 'origin/5.11' into devLiang Qi2018-05-081-0/+2
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp tests/auto/corelib/io/qresourceengine/qresourceengine_test.pro Change-Id: I3169f709cc2a1b75007cb23c02c4c79b74feeb04
| | * | Fix build without features.timezoneTasuku Suzuki2018-05-081-0/+2
| | | | | | | | | | | | | | | | | | | | Change-Id: I3f8421103afa61baf415636b4dc8cf93fb477bcc Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | | | configure: change convention of passing libraries to config testsOswald Buddenhagen2018-05-081-7/+0
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | instead of pre-resolving them and passing the final LIBS to qmake, pass raw QMAKE_*_LIBS* assignments and a QMAKE_USE stanza. the immediate benefit of that is that it centralizes the debug/release lib handling, which makes build variant overrides available to all libraries, not just a few selected ones. note that this removes the CONFIG+=build_all from the test projects. turns out that this was ineffective to start with, as config tests are built with an explicit CONFIG-=debug_and_release. we might re-instate it in a non-broken way later on. Change-Id: I2117c5b36937e8230bd571dcee83231515cbe30b Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | | qsimd: add support for new x86 CPU featuresThiago Macieira2018-05-054-328/+393
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds detection for: VAES, GFNI, AVX512VBMI2, AVX512VNNI, AVX512BITALG, AVX512VPOPCNTDQ, AVX512_4NNIW, AVX512_4FMAPS. These features were found in the "Intel® Architecture Instruction Set Extensions and Future Features" manual, revision 30. This commit also adds support for RDPID (already in the main manual) and the Control-flow Enforcement Technology, which appears in a separate Intel paper. This new support was done by adding a new generator script so we don't have to maintain two tables in sync, one in qsimd.cpp with the feature names, and the other in qsimd_p.h. Since we now need a lot more bits, it's no longer worth keeping the two halves of the qt_cpu_features variable mostly similar to the main two CPUID results. This commit goes back to keeping things in order, like we used to prior to commit 6a8251a89b6a61258498f4af1ba7b3d5b7f7096c (Qt 5.6) At the time of this commit, GCC 8 has macros for AVX512VPOPCNTDQ, AVX512_4NNIW, AVX512_4FMAPS, AVX512VBMI2 and GFNI. Change-Id: I938b024e38bf4aac9154fffd14f7afae50faaa96 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | qsimd: remove support for systems without 64-bit atomicsThiago Macieira2018-05-052-17/+7
| | | | | | | | | | | | | | | | | | | | | | | | We had that as a concession for early toolchains that failed to include the necessary libraries. They must now be up-to-date. Change-Id: I938b024e38bf4aac9154fffd14f7a630ef160cd5 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-05-055-9/+10
|\| | | | | | | | | | | Change-Id: Ib58433da04bffb5dfab5486b80f17f39cc4145fa
| * | QAbstractEventDispatcher: add a note about the timer range for Qt 6Thiago Macieira2018-05-041-0/+1
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-67383 Change-Id: I00ccecb71c774bb9b86cfffd15205b4f38088764 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | QJsonDocument: Validate also zero-length objectsJüri Valdmann2018-05-041-2/+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-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | Fix the enabling of AES with ICC and MSVC on some low-end processorsThiago Macieira2018-05-041-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GCC and Clang assume that all Sandybridge (2nd generation) and newer Intel Core™ processors have AES, which I used as a source of information for this code. However, there are a few low-end parts that miss this feature, like Intel Core™ i3-2350M, i3-3130M, i3-4000M. [1] https://ark.intel.com/products/series/75025/4th-Generation-Intel-Core-i3-Processors Task-number: QTBUG-67705 Change-Id: If90a92b041d3442fa0a4fffd1525b9afbcb6e524 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | QContiguousCache: add assertion to avoid negative capacityChristian Ehrlicher2018-05-041-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ctor of QContiguousCache and setCapacity are accepting negative values for the capacity. While this should not be done it can happen by accident. Therefore add Q_ASSERT to ensure a positive value. Task-number: QTBUG-19700 Change-Id: I7458100c07c687cdeaebe86400343d79b5a6330a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Merge remote-tracking branch 'origin/5.11' into devLiang Qi2018-05-031-1/+6
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/widgets/graphicsview/elasticnodes/graphwidget.cpp examples/widgets/graphicsview/elasticnodes/node.cpp examples/widgets/graphicsview/elasticnodes/node.h src/plugins/platforms/cocoa/qnsview.mm src/plugins/platforms/cocoa/qnsview_drawing.mm src/widgets/kernel/qmacgesturerecognizer_p.h Change-Id: I13cf06bac75d48d779d8ee7b5c91bfc976f2a32c
| * | QProcess: set proper error state if we failed to create a pipeThiago Macieira2018-05-021-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the pipe creation fails, we need to properly close the pipes that were successfully created, emit the signal indicating failure and set the state back to NotRunning. The error string is reused from below, so there's no new translatable string. Task-number: QTBUG-67744 Change-Id: If90a92b041d3442fa0a4fffd1526207698f234a6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | | qFatal: Prevent deadlocks on WindowsThiago Macieira2018-05-021-1/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We began using abort() on 25d6f312ac5b42a6bbca4d1c3c06742d97283e14 (5.8), which improved since we stopped using exit() with MSVC. However, abort() with MinGW and on debug-mode MSVC's CRT calls _exit(), which attempts to cleanly unload the DLLs, which in turn may run global destructors. [ChangeLog][QtCore][Important behavior changes] qFatal() no longer uses std::abort() on Windows, as there are circumstances where global destructors are still run after that call, leading to possible deadlocks. Task-number: QTBUG-34460 Change-Id: I2bec439d0e9841f58c7ffffd152200e45f1df982 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* | | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-05-022-25/+48
|\| | | | | | | | | | | Change-Id: Ia082e20e2eb4b76afd4c1a1584ff4e5514655d7a
| * | QItemSelectionModel: More fixes for is(Column/Row)SelectedDaniel Teske2018-04-301-27/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | QitemSelectionModel: Fix a bug in isColumnSelectedDaniel Teske2018-04-301-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously the code for isColumnSelected and isRowSelected differed slightly, in how unselectable indexes would be treated. This made isColumnSelected return false for a column, which mixed unselectable indexes and selected indexes. Thus in some situations, the user could not deselect a column via a QTableView header. By copying the isRowSelected code to isColumnSelected, rows and columns behave identical. Task-number: QTBUG-18001 Change-Id: I6ca85ac64b31a481fafeaa3bec958b18283eed8d Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| * | QMimeDatabase: check 128 bytes rather than 32, for text vs binaryDavid Faure2018-04-271-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | As per today's change in the MIME spec. https://bugs.freedesktop.org/show_bug.cgi?id=97372 Change-Id: Iba4fdd95c3ebec8a042404956db3466a46c97f1d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Make the use of -fdata-sections and --gc-sections more generic in QtMikhail Svetkin2018-04-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add qmake feature and configure option, which optimze the size of static exectuable. Use for static build. Enabled via configure --gc-binaries, or CONFIG += gc-binaries in 3rd party projects. Change-Id: I3c25b02caaef6a4afc6019afc9c67122dd11696d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | | Merge remote-tracking branch 'origin/5.11' into devLiang Qi2018-04-264-49/+54
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm src/plugins/platforms/cocoa/qcocoawindow.mm Change-Id: Ideea96d1b43d47b1d9b34e11c9986a88e240aa71
| * | improve documentation, mostly of the QT_TR*_NOOP macrosOswald Buddenhagen2018-04-253-38/+38
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I65ccddec84a01945a6aee2a859d4f92ea830785b Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: Mateusz Starzycki <mstarzycki@gmail.com> Reviewed-by: Martin Smith <martin.smith@qt.io>