diff --git a/core/meta/inc/TIsAProxy.h b/core/meta/inc/TIsAProxy.h index 5b43db54e9aefd91c3f4eac5e321a21d8a4785f9..5fabf20cd255765fe1dcfd8c51715e751e7d1151 100644 --- a/core/meta/inc/TIsAProxy.h +++ b/core/meta/inc/TIsAProxy.h @@ -37,13 +37,13 @@ private: const std::type_info *fType; //Actual typeid of the proxy TClass *fClass; //Actual TClass - Char_t fSubTypes[72];//map of known sub-types - mutable Atomic_t<UInt_t> fSubTypesReaders; //number of readers of fSubTypes + Atomic_t<void*> fLasts[fgMaxLastSlot]; // points into fSubTypes map for last used values + Char_t fSubTypes[72]; //map of known sub-types + mutable Atomic_t<UInt_t> fSubTypesReaders; //number of readers of fSubTypes Atomic_t<Bool_t> fSubTypesWriteLockTaken; //True if there is a writer - Bool_t fVirtual; //Flag if class is virtual - Atomic_t<Bool_t> fInit; //Initialization flag - Atomic_t<void*> fLasts[fgMaxLastSlot]; // points into fSubTypes map for last used values - Atomic_t<UChar_t> fNextLastSlot;// Next slot in fLasts to use for update (ring buffer) + Atomic_t<UChar_t> fNextLastSlot; // Next slot in fLasts to use for update (ring buffer) + Atomic_t<Bool_t> fInit; //Initialization flag + Bool_t fVirtual; //Flag if class is virtual void* FindSubType(const std::type_info*) const; void* CacheSubType(const std::type_info*, TClass*); diff --git a/core/meta/src/TIsAProxy.cxx b/core/meta/src/TIsAProxy.cxx index 22e197ce53b89adf4584c77359ec59ce5630ecfe..eb9d4ac9b51881d5fc783ecee6631246208c8cae 100644 --- a/core/meta/src/TIsAProxy.cxx +++ b/core/meta/src/TIsAProxy.cxx @@ -48,7 +48,7 @@ namespace { TIsAProxy::TIsAProxy(const std::type_info& typ) : fType(&typ), fClass(nullptr), fSubTypesReaders(0), fSubTypesWriteLockTaken(kFALSE), - fVirtual(kFALSE), fInit(kFALSE) + fInit(kFALSE), fVirtual(kFALSE) { static_assert(sizeof(ClassMap_t)<=sizeof(fSubTypes), "ClassMap size is to large for array");