From c75d1e90af02e1173b6a0d4b1430c2d36070c017 Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Wed, 3 Jun 2026 12:08:50 +0200 Subject: [PATCH 1/2] [aclic] Add test triggering RVec uninitialized warning --- roottest/root/aclic/rvec_uninitialized/CMakeLists.txt | 3 +++ .../root/aclic/rvec_uninitialized/rvec_uninitialized.C | 7 +++++++ .../root/aclic/rvec_uninitialized/rvec_uninitialized.ref | 0 3 files changed, 10 insertions(+) create mode 100644 roottest/root/aclic/rvec_uninitialized/CMakeLists.txt create mode 100644 roottest/root/aclic/rvec_uninitialized/rvec_uninitialized.C create mode 100644 roottest/root/aclic/rvec_uninitialized/rvec_uninitialized.ref diff --git a/roottest/root/aclic/rvec_uninitialized/CMakeLists.txt b/roottest/root/aclic/rvec_uninitialized/CMakeLists.txt new file mode 100644 index 0000000000000..59f1ddcb2cddb --- /dev/null +++ b/roottest/root/aclic/rvec_uninitialized/CMakeLists.txt @@ -0,0 +1,3 @@ +ROOTTEST_ADD_TEST(rvec_uninitialized + MACRO rvec_uninitialized.C+ + OUTREF rvec_uninitialized.ref) diff --git a/roottest/root/aclic/rvec_uninitialized/rvec_uninitialized.C b/roottest/root/aclic/rvec_uninitialized/rvec_uninitialized.C new file mode 100644 index 0000000000000..609befd86e7b5 --- /dev/null +++ b/roottest/root/aclic/rvec_uninitialized/rvec_uninitialized.C @@ -0,0 +1,7 @@ +#include + +struct RVecUninitialized { + ROOT::RVec v; +}; + +void rvec_uninitialized() {} diff --git a/roottest/root/aclic/rvec_uninitialized/rvec_uninitialized.ref b/roottest/root/aclic/rvec_uninitialized/rvec_uninitialized.ref new file mode 100644 index 0000000000000..e69de29bb2d1d From b441aeb00933c8218c240a7b82ce1a61ad595be0 Mon Sep 17 00:00:00 2001 From: Vincenzo Eduardo Padulano Date: Wed, 3 Jun 2026 16:07:59 +0200 Subject: [PATCH 2/2] [vecops] Delay RVec initialization to avoid uninitialized variable warning --- math/vecops/inc/ROOT/RVec.hxx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index fdf9d42d011f0..7a1f89194e86f 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -219,7 +219,12 @@ class R__CLING_PTRCHECK(off) SmallVectorTemplateCommon : public SmallVectorBase // Space after 'FirstEl' is clobbered, do not add any instance vars after it. protected: - SmallVectorTemplateCommon(size_t Size) : Base(getFirstEl(), Size) {} + SmallVectorTemplateCommon(size_t Size) : Base(nullptr, Size) + { + // We delay the initialization of fBeginX until the constructor of the derived class, to avoid doing pointer math + // on an object that is not yet fully constructed. + fBeginX = getFirstEl(); + } void grow_pod(size_t MinSize, size_t TSize) { Base::grow_pod(getFirstEl(), MinSize, TSize); }