@@ -1047,7 +1047,7 @@ void ROOT::RFieldBase::ReconcileOnDiskField(const RNTupleDescriptor &desc)
10471047
10481048void ROOT::RFieldBase::EnsureMatchingOnDiskField (const RFieldDescriptor &fieldDesc, std::uint32_t ignoreBits) const
10491049{
1050- const std::uint32_t diffBits = CompareOnDiskField (fieldDesc) & ~ ignoreBits;
1050+ const std::uint32_t diffBits = CompareOnDiskField (fieldDesc, ignoreBits) ;
10511051 if (diffBits == 0 )
10521052 return ;
10531053
@@ -1082,18 +1082,18 @@ void ROOT::RFieldBase::EnsureMatchingTypePrefix(const RFieldDescriptor &fieldDes
10821082 throw RException (R__FAIL (" incompatible type " + fieldDesc.GetTypeName () + " for field " + GetQualifiedFieldName ()));
10831083}
10841084
1085- std::uint32_t ROOT::RFieldBase::CompareOnDiskField (const RFieldDescriptor &fieldDesc) const
1085+ std::uint32_t ROOT::RFieldBase::CompareOnDiskField (const RFieldDescriptor &fieldDesc, std:: uint32_t ignoreBits ) const
10861086{
10871087 std::uint32_t diffBits = 0 ;
1088- if (GetFieldVersion () != fieldDesc.GetFieldVersion ())
1088+ if ((~ignoreBits & kDiffFieldVersion ) && ( GetFieldVersion () != fieldDesc.GetFieldVersion () ))
10891089 diffBits |= kDiffFieldVersion ;
1090- if (GetTypeVersion () != fieldDesc.GetTypeVersion ())
1090+ if ((~ignoreBits & kDiffTypeVersion ) && ( GetTypeVersion () != fieldDesc.GetTypeVersion () ))
10911091 diffBits |= kDiffTypeVersion ;
1092- if (GetStructure () != fieldDesc.GetStructure ())
1092+ if ((~ignoreBits & kDiffStructure ) && ( GetStructure () != fieldDesc.GetStructure () ))
10931093 diffBits |= kDiffStructure ;
1094- if (GetTypeName () != fieldDesc.GetTypeName ())
1094+ if ((~ignoreBits & kDiffTypeName ) && ( GetTypeName () != fieldDesc.GetTypeName () ))
10951095 diffBits |= kDiffTypeName ;
1096- if (GetNRepetitions () != fieldDesc.GetNRepetitions ())
1096+ if ((~ignoreBits & kDiffNRepetitions ) && ( GetNRepetitions () != fieldDesc.GetNRepetitions () ))
10971097 diffBits |= kDiffNRepetitions ;
10981098
10991099 return diffBits;
0 commit comments