This removes the second portion of the #if mess of shared code between
QSharedMemory and QSystemSemaphore for SystemV.
Change-Id: Id8d5e3999fe94b03acc1fffd171c073c2873206e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
So we don't have to mess around with #ifs to support the build.
Drive-by replace with unlink() some calls to QFile::remove(), which
create a QFSFileEngine, to call QFSFileEngine::remove, which calls
QFileSystemEngine::removeFile. Since we've just created the file with
qt_safe_open(), we may as well use the low-level Unix function to remove
too.
Change-Id: Id8d5e3999fe94b03acc1fffd171c06c7efc0b0f0
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
It's not a lot of files, but it's actually more in the same dir than
mime/ does right now. I'm about to add two more files, though I'll also
merge a few more later.
Change-Id: Id8d5e3999fe94b03acc1fffd171bfe2ea36a35a7
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
These methods don't seem to be used by anyone now, but not sure
how it was before, so to not run into any BiC issues, just add
a comment to remove them in Qt 7.
Change-Id: Ie30a3d2adcbbb7530d9cf72f03b78ecfa06e426c
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
The growBy() function takes the _increment_ of the size(), so needs to
add size() to increment for the call to realloc().
Add a test which hangs (vanilla build) or explodes (valgrind build)
without the fix.
Amends 26b227e128.
Done-with: Eirik Aavitsland <eirik.aavitsland@qt.io>
Pick-to: 6.5 6.4
Fixes: QTBUG-110412
Change-Id: I7ea91342fdcb779825c88013a3f86ba6d90ef530
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
This makes the exceptions prints tagged with the app's name/tag,
and also can allow QTest::ignoreMessage() to handle exceptions as now
it cannot filter messages out because they're printed by the Android
system.
Pick-to: 6.5
Change-Id: I9f5132b9ec5b5cd8fb35707eaaf68aa517f417ec
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Thanks to Ahmad for noting.
Amends 6bc227a06a.
Pick-to: 6.5
Change-Id: Ie6191bfc21d69f88a9a135f0d5f6b4fa8b09e8ad
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
It wasn't added when this class was created in 5.0 because we couldn't
add move constructors and still keep the ability to compile Qt with
C++98 compilers. We've forgot to correct this shortcoming since 5.6.
Fixes: QTBUG-109842
Pick-to: 6.5
Change-Id: I69ecc04064514f939896fffd17376b8243b73c52
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
If an object had elements and then was emptied, it will have a non-null
d pointer, which wasn't taken into account in the comparison.
Fixes: QTBUG-109840
Pick-to: 6.5 6.4 6.2
Change-Id: I69ecc04064514f939896fffd17376aa18184653c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
range_access.h:274:5: error: inlining failed in call to ‘always_inline’
‘constexpr std::size_t std::size(const _Tp (&)[_Nm]) noexcept [with _Tp
= short unsigned int; long unsigned int _Nm = 34]’: target specific
option mismatch
qsimd.cpp:367:35: note: called from here
Pick-to: 6.5
Change-Id: Ide4dbd0777a44ed0870efffd1739097c71991822
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Passing a NumberMode lets it exclude floating-specific details for
integer parsing. For now this is only partially exploited, but later
work shall make more use of it.
Fixes: QTBUG-81756
Change-Id: If11d3a5a122d0714f645e58a51ee0d0c47ebe61d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It's always a constexpr (or static const that could be constexpr; fix
the cases of this while I'm here) or an integer literal, so we can, so
we might as well.
Change-Id: I61e9bcdb27f4a05f011ccce16b5f15d0dade0782
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Use a stack buffer, and perform the recoding from L1 to U8 in chunks.
Solves the L1 case of
Task-number: QTBUG-109284
Pick-to: 6.5
Change-Id: Ia9ac7d8b27fd452d24d9e27f0575f9fc83b6dcbc
Reviewed-by: Mate Barany <mate.barany@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
This reverts commit 6a18bc8090.
Reason for revert: The reason for the original revert has been fixed
in c146d25a87.
Change-Id: I996960633dc75a7ef3ae12ab7f759658af7932c5
Reviewed-by: Xavier BESSON <developer@xavi-b.fr>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
The move-constructors for QTimeZone and QTimeZone::Data are trivial so
can be inlined. Requested by Marc Mutz in 6.5 API review.
Pick-to: 6.5
Change-Id: Id59dc95e0da061187d9db8cf0a5ab82fcece1694
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The {CF,NS}TimeZone declarations are only used when backends are in play.
Pick-to: 6.5
Change-Id: I17fd3fc90ce96f35bcb8f81b862cc5d3752e37e8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It doesn't seem like that it is being used anymore, except an instance
in pro2cmake which I replaced by NO_GENERATE_METATYPES.
Pick-to: 6.5
Change-Id: I135cf47e6041e98b354fb684f0079dad30689dea
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
"src/corelib/kernel/qproperty.cpp" documents assignment operators over
`QPropertyBinding` for `QProperty` and `QPropertyAlias`.
Those operators were removed in 638df6138e
and are thus stale.
Similarly, an assignment operator for `QPropertyAlias<T>` over a `T&&`
is documented albeit it was removed in
927647cd03.
Due an incorrect implementation of QDoc, which has now been removed,
with regards to identifying copy/move assignment operators, and the more
superficial and incorrect way in which QDoc binds those kind of elements
to the clang AST, QDoc was unable to report the lack of a binding
declaration for those elements that were removed, producing incorrect
documentation instead.
As of the latest changes to QDoc this will correctly generate a warning.
To avoid the addition of new warnings and remove stale and incorrect
documentation, the document blocks were removed from the file.
Change-Id: I30e20f26d4c44e4589abf40546d8ebaa4e869638
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
$<CONFIGURATION> is deprecated from CMake 3.0
Pick-to: 6.5
Change-Id: I1b19507a8cb3325095440e0a22fc54f9fde77e9b
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
doubleconversion is not a feature user can disable
Change-Id: Ie430a88449a39885e9002322c3572ead9bc04bc1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
qwasmclipboard.cpp and qwasmdrag.cpp had the same logic that read
the js DataTransfer object implemented twice with small differences.
Use a single implementation in both.
This also introduces a clearer memory ownership model in the reader
code, and fixes a potential race condition by introducing a cancellation
flag.
Removed the useless QWasmDrag type which was in essence a SimpleDrag
and made the m_drag in QWasmIntegration a smart pointer.
Fixes: QTBUG-109626
Pick-to: 6.5
Change-Id: I5b76dd3b70ab2e5a8364d9a136c970ee8d4fae9c
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
This got lost during the QStringView port that happend in Qt 6.0
(commit 548dcef089) because
QString::operator+=(QStringView) does not copy the nullness of the right
side, whereas QString::operator+=(const QString &) does.
Pick-to: 6.2 6.4 6.5
Fixes: QTBUG-84315
Change-Id: Ide4dbd0777a44ed0870efffd17399b772d34fd55
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Its objective is to copy uninitialized content and that's fine.
qcontainertools_impl.h:73:25: error: ‘~~~’ may be used uninitialized [-Werror=maybe-uninitialized]
73 | std::memmove(static_cast<void*>(out),
| ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
74 | static_cast<const void*>(first),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
75 | n * sizeof(T));
| ~~~~~~~~~~~~~~
Pick-to: 6.5
Change-Id: Ide4dbd0777a44ed0870efffd173917092b671dd0
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
This replaces an ad-hoc solution.
As a drive-by, remove a check that was always true.
Pick-to: 6.5
Change-Id: I72166ee75a2c474dc91bc699c790f256b78b3b7a
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
initializer_list is supposed to be cheap to copy, and passing by value
will avoid one further indirection (though the compiler can probably see
through it, anyway).
Pick-to: 6.5
Change-Id: I8ffbf5de4d8cf2c85f4cff76ef63d6cdeac4db5a
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
ICU 50.1 was released May 11th, 2012. Despite of the restriction, all
currently supported operating systems will continue to be supported.
All mismatches described in QTBUG-99715 are fixed in this version.
Restricting to 72.1 (latest version as per January 2023) or 63.1 (2018)
would still exclude e.g. RHEL 9.0, which ships version 56.1.
Task-number: QTBUG-109505
Pick-to: 6.5
Change-Id: Ic5cd7927d6f5fb60a89423c305796a9ed311bfa2
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
QString and QStringView have the same size_type these days.
Pick-to: 6.5 6.4
Change-Id: I59ffe78f51e06ccc130562b1682fb4a672c3ec22
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
- QPermission_s_ -> QPermission
- add a comma to make a text piece clearer
Pick-to: 6.5
Change-Id: I08469cca9a05b08772d101fdab4eccd6b9cfcab8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This works by collecting the paths of all blacklist files
and deferring a call which ultimately reads all of the files and
glues them together to form a master blacklist file for the batch.
There might be conflicting function names inside the batch. For now
we ignore the problem, while keeping in mind that it exists.
Fixes: QTBUG-110016
Change-Id: I9c8412097418c6e93297ab89af718d7466e2e451
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
Move all libthai symbol resolution and state management into a single
class. Create a single global static instance of this class. This allows
freeing of the state on program exit.
Task-number: QTBUG-105544
Pick-to: 6.5
Change-Id: I2610863f85f49f88e83f1fdaa200ea277c88c0ef
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Despite being move-only, std::vector<unique_ptr> advertizes
is_copyable:
https://quuxplusone.github.io/blog/2020/02/05/vector-is-copyable-except-when-its-not/
Our combined reallocation and resizing function, reallocate_impl(),
runs afoul of this when it uses std::is_copyable in a constexpr-if to
implement resize(n, v) without running into problems with move-only
types: the trait is true, but actual instantation runs into a
static_assert in the STL implementation.
To fix, move the problematic resize functionality out of
reallocate_impl() and into the resp. resize_impl overloads. The shrink
functionality remains in reallocate_impl(), because there are many
more users, and it only requires destructible<T>, which isn't
constraining at all.
Amends a00a1d8806.
Fixes: QTBUG-109745
Pick-to: 6.5 6.4
Change-Id: Ibc5b9cf5375108eb3d8f6c8a16d4fd02dadd73b1
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
QDir caches data in mutable variables. Because of no protection, two
threads calling for instance QDir::count on two independent but shared
copies of a QDir object caused a data race.
Running the tst_QDir_tree and tst_QDir_10000 three times with and
without this change show no change beyond the difference between
each result. For instance tst_QDir_tree::thousandFiles:"src" took
36/35/37 ms before the change and 35/35/35 ms after.
This makes sense because the time to handle mutexes is very little
compared the time to make file operations.
Fixes: QTBUG-105753
Change-Id: I6886f84521410f88cce2b25f0cce8cfc3fea1a0b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
_qt_internal_expose_deferred_files_to_ide must add the source files to
the target exactly as they were passed to
_qt_internal_expose_source_file_to_ide. Otherwise, CMake might be fooled
into thinking that we're adding a new file here, and source file
properties would not be readable.
Instead of back-calculating the relative paths from the absolute paths,
we use the already existing list of relative paths.
Pick-to: 6.5
Fixes: QTBUG-109678
Change-Id: I81510f37eacb409eb5c03e3ff032926c3ca25a1f
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
As discussed in API review, the default-constructed T() returned from
a mismatched data<T>() call is indistinguishable from a real T with
default state.
To make them distinguishable, return optional<T>. Call the new
function value<T>(), mimicking QVariant::value<T>(), and suggested in
API review, because data() is usually used to return raw pointers, not
values.
Remove the qWarning() on requestedType and actualType mismatch, as the
new function can be used in std::get_if/dynamic_cast-like if-then-else
chains, in which failure is part of the normal operation, and a
warning message misplaced:
if (auto loc = perm.value<QLocationPermission>())
~~~ use *loc ~~~
else if (auto con = perm.value<QContactsPermission>())
~~~ use *con ~~~
~~~ etc ~~~
Pick-to: 6.5
Change-Id: I799a58e930307323ebce8f9ac50a42455e9c017f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Its symbol changed once it was changed to protected, so even if
it's unlikely to have been imported in any application let's just
change it back to private.
Pick-to: 6.5
Change-Id: I21b4a471caedb8edc8e1a04f706eae541b3c12fd
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Following the QRect, add functions converting the QString to native
emscripten::val and back: fromJsString, toJsString
Change-Id: I2d0625ede3bbf7249e2e91b8de298b5b91df8ba2
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Use th_brk_new()/th_brk_find_breaks() instead of non-thread-safe
th_brk(). The new API is available in libthai since version
0.1.25 released on 2016-06-28.
[ChangeLog][QtCore] Correct line wrapping of Thai text now requires
libthai version 0.1.25 or above.
Fixes: QTBUG-105544
Pick-to: 6.5
Change-Id: I723050bef9f4e6445c946125c74c99e50addadef
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
These docs are for Q_Calendar_Permission, not for QContactsPermission.
Pick-to: 6.5
Change-Id: Ifbffa568b510ef035270082d1926e35d8d5cf241
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
They can be smaller than an int, so use quint8. In a world of BC
guarantees, pinning the underlying type of enums is best practice.
Found during API review.
Pick-to: 6.5
Change-Id: I0c31fe4565329982c81173e3a265f73758aad257
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
The code to save parent_id, actually a member variable that's
commented out, presumably because we have no use for it, was declaring
a variable to save it in and then Q_UNUSED()ing it. It is simpler to
just not do any of that. Since this "code" did at least document where
to get the parent_id, if we ever do want it, and what the number just
parsed actually means, keep the assignment as a comment but make clear
why it's commented out.
Change-Id: Iec59fa4d1af6c7e3b16570a612178a54004ebb70
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Like done elsewhere (e.g. in QStringView), formulate the constaint in
if_x<T> = true from, and let qdoc see it. Then document the constraint
in prose, too.
As a drive-by, use C++17 variable templates instead of
std::bool_value, and document that data() returns a
default-constructed T on failure (which is indistinguishable from a
successful call that happens to return a default-constructed T, so we
should probably return an optional<T> here, but that's orthogonal to
the change at hand).
Pick-to: 6.5
Change-Id: I0584ce3f4febd619d3966afeb6244b11b167cd42
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>