qt6-bb10/tests/auto
Marc Mutz eb10876c7d Unbreak QSet::intersect()
The selection of which set to iterate over and which one to remove
from based on their relative size violates the function's
documentation, which clearly states that items are removed from *this,
and not from `other`, so the result must never contain any elements
from `other`.

Amends 4f2c96eaa8. Instead of reverting
to the gruesome old code with the forced detach-just-to-remove copies,
distinguish four cases:

- if the two sets are shallow copies of each other, then their
  intersection is *this

- otherwise, if either set is empty, clear() *this. This is required
  for one of the tests that 29017f1395
  added to succeed.

- otherwise, if *this is detached, perform the operation in-place,
  using removeIf()

- otherwise, create a new set and move-assign to *this to avoid
  detaching just to remove something again. In this case, we can
  continue to iterate over the smaller set, but we need to keep
  picking elements from LHS into the result.

[ChangeLog][QtCore][QSet] Fixed a regression (introduced for Qt 5.2)
in intersect() that caused equivalent elements of `*this` to be
overwritten by elements of `other` if `other.size()` was larger than
`this->size()`.

Not picking to 5.15, as users will have likely adjusted their code to
the buggy behavior, and because removeIf() isn't available there.

Pick-to: 6.5
Fixes: QTBUG-132536
Task-number: QTBUG-106179
Change-Id: Idfa17c3b3589c4eacec27259fc01df6aeaa6c45f
Reviewed-by: Øystein Heskestad <oystein.heskestad@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 162015e9c6f469951d9212ef655cff16dcace071)
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
(cherry picked from commit eb13efc4a606cdb0c6f785a6319c489ad53626f3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2025-02-05 15:57:55 +00:00
..
bic/data Add 6.8.0 binary compatibility file 2024-10-17 19:30:33 +00:00
cmake _qt_internal_process_resource: Properly escape XML 2025-01-25 14:21:36 +00:00
concurrent QtConcurrent: fix support for callables with deduced return type 2025-01-06 17:09:37 +00:00
corelib Unbreak QSet::intersect() 2025-02-05 15:57:55 +00:00
dbus QtDBus: disallow sending method calls without destinations on a bus 2024-10-22 07:17:08 +00:00
gui tests: Skip tst_QClipboard for Ubuntu 24.04 GNOME/X11 2025-01-31 14:06:21 +00:00
guiapplauncher Convert "Color Editor Factory" Example to snippets 2024-04-19 13:39:41 +02:00
network QTestLib: Add helper function to check for keychain access issues 2025-01-25 14:21:22 +00:00
opengl tests: Remove remains of qmake conversion from CMakeLists.txt files 2023-02-17 21:56:49 +01:00
other Fix tst_gestures flakiness on XCB 2024-11-14 17:45:35 +00:00
printsupport tests: blacklist tst_QPrinter::testPrintPreviewDialog() 2024-08-12 09:43:38 +00:00
shared Introduce flag to use typographical line metrics for fonts 2024-05-31 19:30:53 +02:00
sql Tests: Reduce the number of module includes 2024-11-04 19:42:27 +00:00
testlib De-duplicate the disabling of crash dialogs in our unit tests 2025-01-20 21:30:42 +00:00
tools Bump version to 6.8.3 2025-01-23 11:04:42 +00:00
wasm wasm: Fix focus handling 2024-11-27 06:47:13 +00:00
widgets tst_QGestureRecognizer: do not leak the point device 2025-02-02 15:38:10 +00:00
xml QDomDocument::toByteArray() crashed in case of high XML nesting level 2024-12-06 11:53:53 +01:00
CMakeLists.txt tst_QSettings: port to QTEST_THROW_ON_FAIL 2024-06-27 06:06:02 +00:00
network-settings.h Change license for tests files 2024-02-04 09:56:42 +01:00