Revision ecb4f6450462f6a8cbd3311c748ded2d90359ceb authored by Philippe Canal on 19 October 2020, 21:31:39 UTC, committed by Philippe Canal on 05 October 2022, 17:08:22 UTC
The problem was due  the introduction (in commit f3f0f13) of a fast path in TClass::GetListOfDataMember which did not take in consideration the case:

c = GetClass(someclassname)
c->GetState() == TClass::kForwardDeclared
c->GetListOfDataMember() -> list is now created but empty.
load and parse header file for
c->GetState() == TClass::kInterpreted
c->GetListOfDataMember() -> list is still empty but should have been filled (loaded at this point).

The logic assumed incorrectly that if someclassname was indeed pointing to a class or struct and the list was created then it was loaded.

To keep the fast path and correct the logic, we need to 'promote' TListOfDataMembers::fIsLoaded to be an std::atomic
1 parent a2e9e8e
History

README.md

back to top