diff --git a/core/meta/src/TClass.cxx b/core/meta/src/TClass.cxx index 4f6bca687994861704d57be980356fa8a344c54d..d725543c5dcc9c6980eacde2d36dd96fea9e9847 100644 --- a/core/meta/src/TClass.cxx +++ b/core/meta/src/TClass.cxx @@ -4477,7 +4477,7 @@ TVirtualStreamerInfo *TClass::FindStreamerInfo(UInt_t checksum) const TVirtualStreamerInfo *info = (TVirtualStreamerInfo*)GetStreamerInfos()->At(i); if (!info) continue; if (info->GetCheckSum() == checksum) { - //R__ASSERT(i==info->GetClassVersion() || (i==-1&&info->GetClassVersion()==1)); + R__ASSERT(i==info->GetClassVersion() || (i==-1&&info->GetClassVersion()==1)); return info; } } diff --git a/io/io/src/TStreamerInfo.cxx b/io/io/src/TStreamerInfo.cxx index c74d09a141d790f0a2bddc98a222a8612a532db0..4c0898e742fbe0e319f309f997fb8b137cf54851 100644 --- a/io/io/src/TStreamerInfo.cxx +++ b/io/io/src/TStreamerInfo.cxx @@ -510,35 +510,6 @@ void TStreamerInfo::BuildCheck() } } } - - - -// searchOnChecksum = kTRUE; - -// // If we have a foreign class, we need to search for -// // a StreamerInfo with same checksum. -// Bool_t searchOnChecksum = kFALSE; -// if (fClass->IsLoaded()) { -// if (fClass->IsForeign()) { -// searchOnChecksum = kTRUE; -// } -// } else { -// // When the class is not loaded the result of IsForeign() -// // is not what we are looking for (technically it means -// // IsLoaded() and there is no Streamer() method). -// // -// // A foreign class would have the ClassVersion equal to 1. -// // Also we only care if a StreamerInfo has already been loaded. -// if (fClassVersion == 1) { -// TStreamerInfo* v1 = (TStreamerInfo*) array->At(1); -// if (v1) { -// if (fCheckSum != v1->GetCheckSum()) { -// searchOnChecksum = kTRUE; -// fClassVersion = array->GetLast() + 1; -// } -// } -// } -// } if (!searchOnChecksum) { if (fClassVersion < array->GetEntriesFast()) { @@ -551,7 +522,9 @@ void TStreamerInfo::BuildCheck() if (!info) { continue; } - if (fCheckSum == info->GetCheckSum()) { + if (fCheckSum == info->GetCheckSum() && (info->GetOnFileClassVersion()==1 || info->GetOnFileClassVersion()==0)) { + // We must match on the same checksum, an existing TStreamerInfo + // for one of the 'unversioned' class layout (i.e. version was 1). fClassVersion = i; break; }