Skip to content
Snippets Groups Projects
Commit 138625d7 authored by Philippe Canal's avatar Philippe Canal
Browse files

Correct cause by multiple dictionary for an STL collection.

Previous if the user did (implicitly or explicitly)
  - load first dictionary for a class (without a rootpcm)
  - access the TClass for that class
  - load a second dictionary (with a rootpcm) for the same class
  - Request the list of data members or the list of base class
    for that class.
then the pointer to either list was a nullptr (rather than a
pointer to the proper list as provided by the first dictionary).
parent 12b379ed
No related branches found
No related tags found
No related merge requests found
......@@ -202,6 +202,9 @@ void TProtoClass::Delete(Option_t* opt /*= ""*/) {
////////////////////////////////////////////////////////////////////////////////
/// Move data from this TProtoClass into cl.
/// Returns 'false' if nothing was done. This can happen in the case where
/// there is more than one dictionary for the same entity. Note having
/// duplicate dictionary is acceptable for namespace or STL collections.
Bool_t TProtoClass::FillTClass(TClass* cl) {
if (cl->fRealData || cl->fBase || cl->fData || cl->fEnums.load()
......@@ -217,12 +220,12 @@ Bool_t TProtoClass::FillTClass(TClass* cl) {
// which is part of libCore proper.
if (gDebug > 0)
Info("FillTClass", "Returning w/o doing anything. %s is a STL collection.",cl->GetName());
return kTRUE;
return kFALSE;
}
if (cl->Property() & kIsNamespace) {
if (gDebug > 0)
Info("FillTClass", "Returning w/o doing anything. %s is a namespace.",cl->GetName());
return kTRUE;
return kFALSE;
}
Error("FillTClass", "TClass %s already initialized!", cl->GetName());
return kFALSE;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment