@@ -971,7 +971,7 @@ std::size_t ROOT::RField<TObject>::AppendImpl(const void *from)
971
971
return nbytes;
972
972
}
973
973
974
- void ROOT::RField<TObject>::ReadGlobalImpl(ROOT::NTupleSize_t globalIndex, void *to)
974
+ void ROOT::RField<TObject>::ReadTObject( void *to, UInt_t uniqueID, UInt_t bits )
975
975
{
976
976
// Cf. TObject::Streamer()
977
977
@@ -980,15 +980,21 @@ void ROOT::RField<TObject>::ReadGlobalImpl(ROOT::NTupleSize_t globalIndex, void
980
980
throw RException (R__FAIL (" RNTuple I/O on referenced TObject is unsupported" ));
981
981
}
982
982
983
- CallReadOn (* fSubfields [ 0 ], globalIndex, static_cast <unsigned char *>(to) + GetOffsetUniqueID ());
983
+ * reinterpret_cast <UInt_t *>( reinterpret_cast <unsigned char *>(to) + GetOffsetUniqueID ()) = uniqueID ;
984
984
985
985
const UInt_t bitIsOnHeap = obj->TestBit (TObject::kIsOnHeap ) ? TObject::kIsOnHeap : 0 ;
986
- UInt_t bits;
987
- CallReadOn (*fSubfields [1 ], globalIndex, &bits);
988
986
bits |= bitIsOnHeap | TObject::kNotDeleted ;
989
987
*reinterpret_cast <UInt_t *>(reinterpret_cast <unsigned char *>(to) + GetOffsetBits ()) = bits;
990
988
}
991
989
990
+ void ROOT::RField<TObject>::ReadGlobalImpl(ROOT::NTupleSize_t globalIndex, void *to)
991
+ {
992
+ UInt_t uniqueID, bits;
993
+ CallReadOn (*fSubfields [0 ], globalIndex, &uniqueID);
994
+ CallReadOn (*fSubfields [1 ], globalIndex, &bits);
995
+ ReadTObject (to, uniqueID, bits);
996
+ }
997
+
992
998
void ROOT::RField<TObject>::AfterConnectPageSource()
993
999
{
994
1000
if (GetOnDiskTypeVersion () != 1 ) {
0 commit comments