Commit Graph

14653 Commits (ff153d9874f728c9ec3ab40b87f55ccf0239e538)

Author SHA1 Message Date
Marc Mutz adc025cef6 QCoreApplication/QPostEventList: fix int/qsizetype mismatches
Includes fixes in indexed for loops that are either known to modify
the container under iteration, or else aren't known not to do it, so
were kept as indexed loops, instead of being ported to ranged ones.

Pick-to: 6.3 6.2
Task-number: QTBUG-103532
Change-Id: I7047b6127fbc4ac16ee113cfd6d1c71f2caba1e7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-05-19 11:10:39 +02:00
Marc Mutz a887891271 QCoreApplication: port some indexed to ranged for loops
... fixing the int/qsizetype mismatches in the old code.

These loops trivially don't modify the container under iteration, so
using a ranged for loop is safe.

Pick-to: 6.3 6.2
Task-number: QTBUG-103532
Change-Id: I1c9e1bffceea0ada54007d313aebe2e688fa9122
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-19 11:10:39 +02:00
Thiago Macieira 56dcb3b496 qglobal.h: #include <stdbool.h> in C mode
It's C99 and we require C11.

Change-Id: Ieb9a2aa1ea914b1b956bfffd16eff4556b99f976
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2022-05-18 09:14:18 -07:00
Marc Mutz 042bab072a Fix return value of qGlobalPostedEventsCount()
The unsigned return value was very un-Qt-ish, and, indeed,
tst_QCoreApplication just stored the result in ints.

Port to qsizetype, being the type of the expression that the function
calculates.

Task-number: QTBUG-103532
Change-Id: I95a81a686439b0686faad7a430adeaab66dc9e8d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-18 17:54:15 +02:00
Marc Mutz 7b736e1faf Make qGlobalPostedEventsCount() auto-test-exported-only
The only in-tree user outside QtCore is tst_QCoreApplication, guard
the (single) test function there with QT_BUILD_INTERNAL.

Change-Id: Ibc87ba76f2135cd8283acd75318f80a95e4b5c45
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-18 17:54:15 +02:00
Marc Mutz f2fea2325d Remove manual declarations of qGlobalPostedEventsCount()
... in favor of including qabstracteventdispatcher_p.h, where needed.

Keeps the code DRY.

Change-Id: I5bee2e653cb29ffac2601ff03c952a4b3adbdb9c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-18 17:54:15 +02:00
Marc Mutz ae765813d0 Optimize atomics in QObject::moveToThread() [2/2]: de-duplicate loads
We don't need to reload d->threadData, as we've already loaded it into
a register three lines above, so use the already-loaded value.

We don't care whether we might have read a different value the second
time around, because that would mean we had a race condition elsewhere
in the program (e.g. concurrent moveToThread() calls).

Pick-to: 6.3
Change-Id: I29a27ca23302288b5900ac6b45b8690a80e85680
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-05-18 06:37:50 +02:00
Marc Mutz adb4a3beb7 Optimize atomics in QObject::moveToThread() [1/2]: relax a pointer load
We don't need an acquire fence for checking a pointer for nullness,
and we're not dereferencing the pointer later, so use a relaxed load
there.

Pick-to: 6.3
Change-Id: Id84e6fc50100f1bf6a4e33f89424f8b1cbb250cd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-18 06:37:46 +02:00
Marc Mutz 5dc724d98d Fix data race in QObject::moveToThread()
We dereference thisThreadData in the next line, at a point in time
where we haven't, yet, verified that it's this_thread's QThreadData,
so we need an acquire fence.

The alternative would be to re-arrange the code so that dereferencing
the pointer is delayed until after we verified it's this_thread's, but
that doesn't seem readily possible.

Even if it was easy, we'd first need to verify whether there are any
writes into QThreadData objects after they've been constructed, in
which case the acquire fence may be needed even in case it's 'ours'.

So just add the acquire fence.

Pick-to: 6.3 6.2 5.15
Change-Id: I468bc1f971bd87345bfcd6c13b7384bdf09d086a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-18 06:37:42 +02:00
Marc Mutz e4309df71a qobject_p.h: remove unused qreadwritelock.h include
Only qcoreapplication_p.h uses a QReadWriteLock (tanslationMutex), so
include it only there.

This include has caused QAtomicPointer<QReadWriteLockPrivate> to
percolate to the top-5 of template instantiation hogs when compiling
QtWidgets, as reported by Clang -ftime-trace.

This patch improves that, because qcoreapplication_p.h isn't part of
the PCH and is much less frequently included into QtWidgets TUs (68
instead of 142 times).

Pick-to: 6.3 6.2
Change-Id: I2518040d83a04e7cef0645d7f4bf641fb50f49ff
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-05-17 18:49:31 +02:00
Marc Mutz 9080a810ad QPropertyBindingPrivate: de-inline functions that modify heapObservers
Manipulating owning containers is costly at runtime, but also at
compile-time, so don't do it in inline functions, do it
out-of-line.

Removes the top-2 entries[1] in a Clang -ftime-trace QtWidget build.

[1] at the time of writing of this patch

Change-Id: I5da5030788b0d976a0ab7875f87ba3b51dbb1231
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2022-05-17 18:49:31 +02:00
Marc Mutz 0ca2cf42e0 QReadWriteLock: fix another data race in stateForWaitCondition()
The writerCount member variable is only ever accessed under
Private::mutex protection, so we need to lock the mutex here, too.

Pick-to: 6.3 6.2 5.15
Change-Id: I1717e5282eed2ecc14ccdc5090b9fc41174cccc8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-17 16:49:31 +00:00
Marc Mutz ff053b39a3 Fix int/qsizetype mismatches in qstring.h
[ChangeLog][QtCore][QString] Fixed result truncation mod INT_MAX in
fromStdSstring(), fromStdU16string(), fromStdU32string(), and
fromStdWstring().

[ChangeLog][QtCore][QAnyStringView] Fixed result truncation mod
INT_MAX in asLatin1StringView().

[ChangeLog][QtCore][QUtf8StringView] Fixed result truncation mod
INT_MAX in toString().

Pick-to: 6.3 6.2
Change-Id: I944c561018a6ab4581ad6b1d71ec1ba1accba4a4
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-05-17 18:49:31 +02:00
Marc Mutz 53a842f66b Give some TLC to FlaggedDebugSignatures
- add noexcept
- use std::array instead of C array
- add comment explaining locations.size()

Change-Id: Ied6c043e693fecc232878a00ea882c97bda150b6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-17 18:49:31 +02:00
Marc Mutz fd31177c45 QObject: Turn flaggedSignatures into a thread_local static
... out of QThreadData.

No-one except two functions in qobject.cpp uses the object, and its
creation is constinit, so there's no advantage to expose it to the
world as a QThreadData member.

Remove it from QThreadData, move the class' definition to the unnamed
namespace in qobject.cpp, ensure constinit'ability by letting the
language zero out the members (as opposed to an STL algorithm call),
declare it constinit thread_local static, and adapt the two users
(basically, removing the retrieval of QThreadData::current()).

Almost no effect on Clang, but saves ~400 bytes on optimized GCC 11.2
Linux AMD64 C++20 builds.

Change-Id: I22432d4ec5eb4ab59920656409b21768983fb4db
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-17 18:49:31 +02:00
Marc Mutz 20d8383cb4 QJniHelpers: don't rely on qreadwritelock.h transitive include
... from qcoreapplication_p.h

Amends 5fd6704091.

Pick-to: 6.3
Change-Id: I00bda35aa7bfd590105d7fe275af181ba7b53446
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2022-05-17 11:16:10 +00:00
Joerg Bornemann c93d279222 Doc: Document qt_add_resources' OUTPUT_TARGETS argument
Originally, this argument was meant for internal use only.  But it
turned out useful for user projects too.

Pick-to: 6.2 6.3
Change-Id: I58af5ca8303fa9166d41a0538a60913d1fba9784
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2022-05-17 11:49:40 +02:00
Alexey Edelev 282f4e5d3a Add qsimd_x86_p.h to the QtCore source tree
Need to collect all header files that belong to the module to make
them visible in CMake source tree. In future commit they will be used
to consider what headers need to be installed for each platform.

Amends 28b4bd7dbb

Change-Id: I7ab4063350254324869d5c2d0ba0f7e336da96fb
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-17 02:51:22 +02:00
Volker Hilsheimer 367092d7e0 Return specific types for frequently used Java objects
This allows us to specialize JNI type signature templates for e.g. the
context object, which in Java signatures is "android/content/Context".

Introduce a Q_DECLARE_JNI_TYPE macro that takes care of the plumbing.
The types declared this way live in the QtJniTypes namespace, and
transparently convert from and to jobject. Since jobject is a typedef
to _jobject* we cannot create a subclass. Use a "Object" superclass
that we can provide a QJniObject constructor for so that we don't
require the QJniObject declaration to be able to use the macro.

The APIs in the QNativeInterface namespace doesn't provide source or
binary compatibility guarantees, so we can change the return types.

Change-Id: I4cf9fa734ec9a5550b6fddeb14ef0ffd72663f29
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2022-05-17 00:34:06 +02:00
Volker Hilsheimer f6e89e901b Fold methods for object return type into generic methods
Since we know at compile time whether the return type is an object type,
we can use 'if constexpr' and auto return type in the call(Static)Method
and get(Static)Field functions to call the object-type methods.

This makes the object-methods conceptually obsolete, but don't declare
them as deprecated as long as they are still used in submodules to avoid
warning floods and build failures in -Werror configurations.

Change-Id: Ic3019ed990a9252eefcb02cdb355f8a6ed6bc2ff
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2022-05-17 00:34:06 +02:00
Marc Mutz 18a16533b9 QString: don't use utf16() just to create a u16string
QString::utf16() will detach from QStringLiterals in order to ensure
NUL-termination, we don't need the returned pointer NUL-terminated,
because we pass the length explicitly to the u16string ctor, so just
use data().

Task-number: QTBUG-98763
Pick-to: 6.3
Change-Id: If883901a41480f469162ff4ed5bef927a3bf060a
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-05-16 23:30:36 +02:00
Marc Mutz 68f220c93b QReadWriteLock: fix data race in stateForWaitCondition()
The function dereferences the load()ed pointer, so it needs an acquire
fence.

Pick-to: 6.3 6.2 5.15
Change-Id: Ib951de3f00851d915fec3392cdaba64f4a994300
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-16 20:36:29 +02:00
Marc Mutz 8af7019096 QReadWriteLock: fix data race in dtor
We need an acquire fence before we delete the d-pointer. Otherwise,
the reads that the dtor performs (QReadWriteLockPrivate contains many
non-trivial data types such as std::mutex and QVLA), race against
writes performed in other threads. The qWarning() indicates that
QReadWriteLock can not rely on external synchronization to ensure
a happens-before relationship between reads in the dtor and said writes.

While an explicit fence just before the delete would suffice, the guard
return is an extremely unlikely error case, and if we ignore it, then
loadAcquire() is correct, so use that.

Pick-to: 6.3 6.2 5.15
Change-Id: I29773b665a7f864cd6b07a294da326e8b10399b5
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-16 18:17:05 +00:00
Lucie Gérard 05fc3aef53 Use SPDX license identifiers
Replace the current license disclaimer in files by
a SPDX-License-Identifier.
Files that have to be modified by hand are modified.
License files are organized under LICENSES directory.

Task-number: QTBUG-67283
Change-Id: Id880c92784c40f3bbde861c0d93f58151c18b9f1
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2022-05-16 16:37:38 +02:00
Volker Hilsheimer 601dbd6499 Add variadic template overloads for QJniObject/Environment methods
This allows the compiler to deduce the template arguments based on the
provided method parameters, which we can then pass to the methodSignature
and fieldSignature helpers to generate the signature string completely at
compile time.

Since we can't partially specialize template member functions, replace
the specializations for void methods with compile-time-if branches in
the general templates.

This variadic template now prevents implicit conversion from the
LiteralStorage types to const char* signatures, so catch the case where
such a type ends up in the parameter list.

Due to overload resolution rules for constructors, we need to explicitly
disable the constructor if any of the arguments is a string literal type,
as we have to keep the old C-style variadic function working for such
calls.

Add variations that use the variadic templates to the unit tests.

Change-Id: I8734664b38bae932369462330a9a03302254c33c
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2022-05-13 18:13:49 +02:00
Marc Mutz b9c55b5b9e QVersionNumber: de-inline QList constructor calls and resize()
The QList<int> range ctor and other QList<int> methods have percolated
up near the top of the list of Clang -ftime-trace most expensive
template instantiations in PCH libQt6Gui.so builds:

**** Templates that took longest to instantiate:
  [...]
  5138 ms: QList<int>::QList<const int *, true> (256 times, avg 20 ms)
  4327 ms: QtPrivate::QCommonArrayOps<int>::appendIteratorRange<const int *> (256 times, avg 16 ms)

The code in 6.3 is already sufficiently different for this patch to
not be applicable there.

Task-number: QTBUG-97601
Change-Id: I4420c8c90e472ecfd679b414cc4334d2ab55cce3
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-13 17:13:46 +02:00
Marc Mutz 949b85a721 QObject: mark two error reporting functions COLD
They already nicely factored this error-only code from the normal path
of execution. All that was missing was for them to be marked as COLD,
so the compiler moves them out of the way even further, and optimizes
them for size, not speed.

TEXT size savings: ~400b on GCC 11.2 and ~500b on Clang 10 optimized
C++20 AMD64 Linux builds.

Pick-to: 6.3 6.2 5.15
Change-Id: I64a4123645855b4e34fbb0bc3304d144d7191a0d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-13 17:13:46 +02:00
Marcus Tillmanns 40e3c1c2b1 Fix removal of trailing slash
The fsevents implementation of QFileSystemWatcher on Mac OS X tries to
remove trailing slashes from the paths when calling addPaths(). If the
user tries to watch "/", the path is changed to "".

The fix checks whether the path is longer than 1 before removing
trailing slashes.

Change-Id: Iafb10e449c4f3bd600b02edbe7c549911db05048
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-13 10:34:05 +02:00
Marc Mutz 11791e2a50 QVarLengthArray: Move unique_ptr<void, free_deleter> to QVLABaseBase
This avoids repeated re-instantiations of unique_ptr with local
deleters, removing that instantiation from the top of the list in
Clang -ftime-trace QtWidgets builds:

**** Templates that took longest to instantiate:
  2627 ms: std::__1::unique_ptr<void, free_deleter> (835 times, avg 3 ms)

Amends e297e80fd0.

Pick-to: 6.3
Task-number: QTBUG-97601
Task-number: QTBUG-99039
Change-Id: I1281f6cf9248a3796d9dfdc653f19f5a67dc3bda
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-05-13 05:14:49 +00:00
Alexey Edelev b98706f122 Add missing header files to the module sources
All module header files should be listed in the corresponding sections
of modules SOURCEs to be accessible in CMake routines.

Task-number: QTBUG-103196
Change-Id: Ieb77ae70557e35e546a5b00387e1e0aa40338239
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2022-05-12 16:34:25 +02:00
Fabian Kosmale 4e7f92bf0d QMetaType: Fix normalization on MSVC if name contains enum
During type normalization, we remove the struct, class and enum
keywords (see the skipStructClassOrEnum function). However, we only want
to do that for actual keywords, not for a name that happens to start
with e.g. "enum", as in "enumerationNameSpacce".
Adjust the MSVC check to still require no identifier character after the
keyword, while still allowing for some remaining characters.

Fixes: QTBUG-97813
Pick-to: 6.3 6.2
Change-Id: I82b873d02ff454cce4b75f2814a52a66f2268208
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-12 08:17:54 +02:00
Thiago Macieira 72d6b897a4 QLibraryInfo: Use __VERSION__ with Clang too
Regular Clang:
 "Clang 14.0.3"

Apple Clang:
 "Apple LLVM 13.1.6 (clang-1316.0.21.2.3)"

Intel oneAPI DPC++:
 "Intel(R) oneAPI DPC++/C++ Compiler 2022.0.0 (2022.0.0.20211123)"

Change-Id: I5ff8e16fcdcb4ffd9ab6fffd16eb57c2673d3030
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2022-05-11 12:50:08 -07:00
Thiago Macieira 20104bb237 Remove remnants of the old Intel C++ compiler
We don't support it any more. I don't think it has ever properly
compiled Qt 6 (and it's no longer working for me against GCC 12's
libstdc++ headers). If you report a bug against it, Intel support's
first question is if you can try instead the new Clang/LLVM-based oneAPI
C++ compiler.

So we support only that one, which identifies itself as Q_CC_CLANG.

Change-Id: I5ff8e16fcdcb4ffd9ab6fffd16eb57a092c8439e
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2022-05-11 12:50:08 -07:00
Thiago Macieira 5302857f5a Atomics: workaround GCC 12 warning about overflowing d->state
I don't see a way this can be anything but a bogus warning.

In member function ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_or(__int_type, std::memory_order) [with _ITp = int]’,
    inlined from ‘static T QAtomicOps<X>::fetchAndOrRelaxed(std::atomic<T>&, typename QAtomicAdditiveType<T>::AdditiveT) [with T = int; X = int]’ at qatomic_cxx11.h:449:33,
    inlined from ‘T QBasicAtomicInteger<T>::fetchAndOrRelaxed(T) [with T = int]’ at qbasicatomic.h:168:36,
    inlined from ‘int switch_on(QAtomicInt&, int)’ at qfutureinterface.cpp:97:31,
    inlined from ‘void QFutureInterfaceBase::setThrottled(bool)’ at qfutureinterface.cpp:194:18:
atomic_base.h:648:33: warning: ‘unsigned int __atomic_or_fetch_4(volatile void*, unsigned int, int)’ writing 4 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=]

A few more of those appear in other modules. I'm not fixing them all,
assuming GCC will soon fix the warning.

Pick-to: 6.2 6.3
Change-Id: I7fb65b80b7844c8d8f26fffd16e93f68e278d048
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2022-05-11 12:50:08 -07:00
Liang Qi 4872392925 Update shared-mime-info to the 2.2 release
This also includes the fix for x-objc++src mimetype.

Fixes: QTBUG-70739
Pick-to: 6.3 6.2 5.15
Change-Id: I24f70fa5cea2e5b1a7877569be98d36878fcfe72
Reviewed-by: David Faure <david.faure@kdab.com>
2022-05-11 11:36:49 +02:00
Lars Knoll b51712f136 Fix namespaced builds on ARM
Use uint64_t instead of quint64 as this code is not namespaced
and to align it with the x86 code path.

Pick-to: 6.2 6.3
Change-Id: I887ef9314a80cfcc17701eac1ec9a086f3cd5bf7
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-10 11:51:11 +02:00
Marc Mutz 877c158c59 Add ARM YIELD support to qYieldCpu()
YIELD is ARM's equivalent of x86's PAUSE, available since ARMv6k,
which should be old enough that we can use it unconditionally.

The ARM manual[1] defines the __yield() intrinsic for this, however:

- Clang has __builtin_arm_yield, the naming is compatible with what
  GCC would use, so we use that if available, to avoid having to
  include even more headers.

- GCC (incl. 12) doesn't have __yield() in arm_acle.h or anywhere
  else, and it doesn't seem to have the builtin (yet, one can always
  hope), so we use asm() there.

- Windows doesn't have an arm_acle.h header, but the docs[2] say it
  should have __yield(). Unfortunately, the docs don't say where
  the intrinsic is hiding, but we already include <intrin.h>, and
  godbolt[3] confirms that's sufficient to use __yield(). We could use
  YieldProcessor(), but we'd need to include qt_windows.h, I guess,
  which I'd rather not.

- Integrity doesn't have the arm_acle.h header, we use asm(), here, too.

[1] https://developer.arm.com/documentation/dui0472/k/Compiler-specific-Features/--yield-intrinsic
[2] https://docs.microsoft.com/en-us/cpp/intrinsics/arm-intrinsics?view=msvc-140
[3] https://godbolt.org/z/Evfe79xhE

Pick-to: 6.3
Fixes: QTBUG-103011
Change-Id: Ibf496dfe9949f9a3d24c0dcf75a703c5fdbbb4b8
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2022-05-10 00:09:04 +00:00
Ivan Solovev 19a5273e05 Fix QtAndroidPrivate namespace documentation
Fix the documentation to show the actual header and module

Fixes: QTBUG-99335
Pick-to: 6.3 6.2
Change-Id: I333a5a95a448fdf3e08801bf794c93b87cd1f81f
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
2022-05-09 12:09:36 +01:00
Joerg Bornemann fc16855eaa Fix qmake/qtpaths -query for static relocatable builds
The install prefix was determined incorrectly for static relocatable
builds.  The reason was that for those builds, QLibraryInfo::path()
returns the application directory, which is <prefix>/bin for qmake and
qtpaths.

Fix this by removing the bin directory part from the installation prefix
that QLibraryInfo returns if qmake/qtpaths are used.

Fixes: QTBUG-102877
Change-Id: I2e9ff96ded0ee2a7802b265741a3cfbe2bf0a4ba
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-05-09 08:32:04 +02:00
Marc Mutz 32f1847e1e QRandomGenerator: port away from std::aligned_storage
It's deprecated in C++23. Just use an explicitly-aligned char array
directly, wrapped in a struct to avoid decays to char*.

Task-number: QTBUG-99122
Pick-to: 6.3 6.2
Change-Id: Ic5807f0161cd9f360baa07464988bc48b9679f64
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-07 20:47:44 +02:00
Marc Mutz d8e03bb02d QHash: port away from std::aligned_storage
It's deprecated in C++23. Just use an explicitly-aligned char array
directly, wrapped in a struct to avoid decays to char*.

Task-number: QTBUG-99122
Pick-to: 6.3 6.2
Change-Id: I802761c1af62efa6ffc006b07837a7deed1ea4cc
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-07 20:47:42 +02:00
Ulf Hermann 38002df206 Endian: Provide special integer bitfield unions
Our previous approach of creating a union from individual special
integer bitfields leads to undefined values because only one member of a
union can be active at any given time. Compilers have finally caught up
with us on that and have started removing "no-op" writes to members.

The primary user of the special integer bitfield unions is
qv4compileddata_p.h in qtdeclarative. We want our on-disk format of
QML compilation units to be platform agnostic and space efficient.

Pick-to: 5.15 6.2 6.3
Task-number: QTBUG-99545
Change-Id: I24847bda2c364eb8ba75f074cde2a9bec25ced06
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2022-05-07 08:37:42 +02:00
Marc Mutz b94ec982c1 QXmlStreamReader: port Value::len from int to qsizetype
It's a stretch of characters in a QString, so it has to be qsizetype.

This enlarges the Value struct further; created QTBUG-103306 to track
ideas to shrink it again.

Pick-to: 6.3 6.2
Fixes: QTBUG-102465
Change-Id: I753cfd801030c834989452eb5422b2cd72d4ef16
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2022-05-07 00:51:23 +02:00
Marc Mutz 5beb4f8516 QXmlStreamReader: port the last two int/qsizetype mismatches
... before the port of Value::len to qsizetype.

Pick-to: 6.3 6.2
Task-number: QTBUG-102465
Change-Id: I7d3823dc5b39d2afade735cdcf61f77ead89738b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2022-05-07 00:51:19 +02:00
Marc Mutz dffba486d1 QXmlStreamReader: port Value::prefix from int to qint16
The prefix is a part of a name, the length of which is bounded to 4k
in fastScanName(), so qint16 suffices.

The length field also shouldn't stay int, but that's a different
patch, because it's just a relative offset to pos, and so isn't as
easily overflown.

This shrinks the Value struct a tiny bit; created QTBUG-103306 to
track ideas to shrink it further.

Pick-to: 6.3 6.2
Task-number: QTBUG-102465
Change-Id: I579815e72501a091360f55e750af63cb4dc5a5a7
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2022-05-07 00:51:15 +02:00
Marc Mutz 61c83dfb22 QXmlStreamReader: port Value::pos from int to qsizetype
It's an index into a QString, so it has to be qsizetype.

The length and prefix fields also shouldn't stay ints, but that's a
different patch, because they're just relative offsets to pos, and so
aren't as easily overflown.

This enlarges the Value struct; created QTBUG-103306 to track ideas to
shrink it again.

Pick-to: 6.3 6.2
Task-number: QTBUG-102465
Change-Id: Ib318e131420c2c535e26cb03cbf450e031626e64
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2022-05-07 00:51:11 +02:00
Marc Mutz 6245d7dd3b QXmlStreamReader: port another indexed to ranged for loop
... fixing yet another int/qsizetype mismatch.

This is clearly safe, as the loop body trivially doesn't modifiy the
container we're iterating over.

Pick-to: 6.3 6.2
Task-number: QTBUG-102465
Change-Id: I7db65455019cf75663432078d39805be5816cf24
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2022-05-07 00:51:06 +02:00
Marc Mutz f7fb3735cf Sync qxmlstream.g with qxmlstreamparser_p.h [2/2]: QT_NAMESPACE macros
Amends 6eb1cdd1c6.

Pick-to: 6.3 6.2
Change-Id: I73f744a537de1ce813e52a6e9934391985d5d5cc
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2022-05-07 00:51:03 +02:00
Marc Mutz 2678adffde Sync qxmlstream.g with qxmlstreamparser_p.h [1/2]: switched lines
Amends 366bdcde97.

Pick-to: 6.3 6.2 5.15
Change-Id: Id18da42b15c8095154408f58bb5e0c5f0d31739b
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2022-05-07 00:50:59 +02:00
Marc Mutz 507b9963b8 QXmlStreamWriter: port Private::write(p, n) from int to qsizetype
We have at least one caller which passes QtContainer::size() as the
length, so don't truncate.

Pick-to: 6.3 6.2
Task-number: QTBUG-102465
Change-Id: I8a692bd6a7b75e745c08b072f53b6efe901d5436
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2022-05-07 00:50:56 +02:00