From b1b0f42c97e6087c91bb5e9766c2b3bd6144aacc Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 27 Mar 2023 21:40:45 +0200 Subject: [PATCH] tst_qtconcurrentrun: fix UB (uninit'ed values) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit While doubleFunction's body is empty, it takes its argument by value, which means copying. Copying an uninitialized double is a gray zone (if you follow the partially-formed paradigma, it's UB; though the std may allow it some types, most notably std::byte and uchar; probably not double, though). Converting an uninitialized int into double is most certainly UB. Fix by initializing both d and i. Found by GCC 11's -Wmaybe-uninitialized. Pick-to: 6.5 6.2 5.15 Change-Id: I103fb72bf4b8792a292346007f498dc6349e9c68 Reviewed-by: Fabian Kosmale Reviewed-by: MÃ¥rten Nordheim --- tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp b/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp index fa03854400..8006a3c00d 100644 --- a/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp +++ b/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp @@ -666,10 +666,10 @@ void tst_QtConcurrentRun::implicitConvertibleTypes() { QThreadPool pool; - double d; + double d = 0.0; run(doubleFunction, d).waitForFinished(); run(&pool, doubleFunction, d).waitForFinished(); - int i; + int i = 0; run(doubleFunction, d).waitForFinished(); run(&pool, doubleFunction, d).waitForFinished(); run(doubleFunction, i).waitForFinished();