From 554e23e733643997864126be240cad9f07b5912e Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 20 Jul 2026 11:18:19 +0200 Subject: [PATCH] [ntuple] fix type check in REntry::BindRawPtr() The BindRawPtr() overload receiving a field name mistakenly disabled the type check. (cherry picked from commit 437afad2e011abdceae99159cd3fc950e4d8794f) --- tree/ntuple/inc/ROOT/REntry.hxx | 2 +- tree/ntuple/test/ntuple_basics.cxx | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tree/ntuple/inc/ROOT/REntry.hxx b/tree/ntuple/inc/ROOT/REntry.hxx index 9db07ceedf48c..7449033b5f3c5 100644 --- a/tree/ntuple/inc/ROOT/REntry.hxx +++ b/tree/ntuple/inc/ROOT/REntry.hxx @@ -231,7 +231,7 @@ public: template void BindRawPtr(std::string_view fieldName, T *rawPtr) { - BindRawPtr(GetToken(fieldName), rawPtr); + BindRawPtr(GetToken(fieldName), rawPtr); } /// Get the (typed) pointer to the value for the field referenced by `token`. diff --git a/tree/ntuple/test/ntuple_basics.cxx b/tree/ntuple/test/ntuple_basics.cxx index ebddc60caa2c7..3de989e1e4af1 100644 --- a/tree/ntuple/test/ntuple_basics.cxx +++ b/tree/ntuple/test/ntuple_basics.cxx @@ -782,6 +782,12 @@ TEST(REntry, Basics) EXPECT_EQ("float", e->GetTypeName("pt")); EXPECT_EQ("float", e->GetTypeName(model->GetToken("pt"))); + float rawPt; + double wrongType; + e->BindRawPtr("pt", &rawPt); + EXPECT_EQ(&rawPt, e->GetPtr("pt").get()); + EXPECT_THROW(e->BindRawPtr("pt", &wrongType), ROOT::RException); + auto ptrPt = std::make_shared(); e->BindValue("pt", ptrPt); EXPECT_EQ(ptrPt.get(), e->GetPtr("pt").get());