From 49e13c350521e3d934da3f36cd3f8c55a0314277 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 31 Jul 2026 23:23:25 +0200 Subject: [PATCH] [ntuple] fix cloning RStreamerField (cherry picked from commit 9bc2c4207dce6678aa03b58b87c11c743c8ea01a) --- tree/ntuple/src/RFieldMeta.cxx | 3 ++- tree/ntuple/test/rfield_class.cxx | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tree/ntuple/src/RFieldMeta.cxx b/tree/ntuple/src/RFieldMeta.cxx index 1747e6f180c17..16157f7c875a3 100644 --- a/tree/ntuple/src/RFieldMeta.cxx +++ b/tree/ntuple/src/RFieldMeta.cxx @@ -879,7 +879,8 @@ void ROOT::RStreamerField::BeforeConnectPageSource(ROOT::Internal::RPageSource & std::unique_ptr ROOT::RStreamerField::CloneImpl(std::string_view newName) const { - return std::unique_ptr(new RStreamerField(newName, GetTypeName())); + // To get the correct TClass instance in the clone, we clone using the un-normalized type name + return std::unique_ptr(new RStreamerField(newName, fClass->GetName())); } std::size_t ROOT::RStreamerField::AppendImpl(const void *from) diff --git a/tree/ntuple/test/rfield_class.cxx b/tree/ntuple/test/rfield_class.cxx index 5cc9ab4a94e0a..bc2cdfb28d2bc 100644 --- a/tree/ntuple/test/rfield_class.cxx +++ b/tree/ntuple/test/rfield_class.cxx @@ -377,6 +377,10 @@ TEST(RNTuple, TClassMetaName) ROOT::RStreamerField f6("f", "EdmWrapper"); EXPECT_STREQ("EdmWrapper", f6.GetClass()->GetName()); EXPECT_EQ("EdmWrapper", f6.GetTypeAlias()); + auto clone = f6.Clone("f"); + auto streamerFieldPtr = static_cast(clone.get()); + EXPECT_STREQ("EdmWrapper", streamerFieldPtr->GetClass()->GetName()); + EXPECT_EQ("EdmWrapper", streamerFieldPtr->GetTypeAlias()); } TEST(RNTuple, StreamerInfoRecords)