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