qt5base-lts/tests/auto
Sona Kurazyan a8794503eb Fix memory leaks when capturing a QFuture in its continuation
Capturing a QFuture in the continuations attached to it results in
memory leaks. QFuture's ref-counted data can only be deleted when the
last copy referencing the data gets deleted. The saved continuation
that keeps a copy of the future (as in case of the lambda capture) will
prevent the data from being deleted. So we need to manually clean the
continuation after it is run. But this doesn't solve the problem if the
continuation isn't run. In that case, clean the continuation in the
destructor of the associated QPromise.

To avoid similar leaks, internally we should always create futures via
QPromise, instead of the ref-counted QFutureInterface, so that the
continuation is always cleaned in the destructor. Currently QFuture
continuations and QtFuture::when* methods use QFutureInterface directly,
which will be fixed by the follow-up commits.

Fixes: QTBUG-99534
Pick-to: 6.3 6.2
Change-Id: Ic13e7dffd8cb25bd6b87e5416fe4d1a97af74c9b
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-01-21 01:51:20 +01:00
..
bic/data Add BC files for 6.2.0 2022-01-07 13:31:38 +00:00
cmake Fix dependency chain that collects the metatype json files 2021-12-02 16:34:23 +01:00
concurrent QtConcurrent::run crashes on program exit 2021-12-20 13:18:26 +01:00
corelib Fix memory leaks when capturing a QFuture in its continuation 2022-01-21 01:51:20 +01:00
dbus tests: Remove unused SRCDIR defines 2021-08-17 12:41:57 +00:00
gui Remove unused .qrc files 2022-01-17 23:17:01 +01:00
guiapplauncher Move QStateMachine from QtCore to QtScxml 2020-08-24 20:10:25 +02:00
network Remove unused .qrc files 2022-01-17 23:17:01 +01:00
opengl Remove the qmake project files 2021-01-07 15:32:28 +01:00
other QIODevice: use QVLA to hold the ring buffers, not QList 2021-12-15 17:35:13 +00:00
printsupport QtBase: replace windows.h with qt_windows.h 2021-11-23 12:53:46 +08:00
shared Remove false Q_UNREACHABLE from shaping code 2021-02-03 09:44:44 +01:00
sql Adapt SQL drivers to Qt 6 change of QVariant::isNull 2022-01-12 17:41:07 +01:00
testlib Remove unused .qrc files 2022-01-17 23:17:01 +01:00
tools Remove unused .qrc files 2022-01-17 23:17:01 +01:00
widgets Improve QAbstractButton::animateClick test 2022-01-20 22:57:45 +01:00
xml QDomDocument::setContent: Open device if necessary 2021-11-09 18:33:39 +01:00
CMakeLists.txt Don't build tests/auto/tools when cross-compiling 2021-10-07 08:03:40 +02:00
network-settings.h Replace QtTest headers with QTest 2020-12-22 15:20:30 +01:00