icinga2/tools/mkclass
Julian Brost abe2dfa763 Replace EventuallyAtomic with AtomicOrLocked which falls back to a mutex
Apparently there was a reason for making the members of generated classes
atomic. However, this was only done for some types, others were still accessed
using non-atomic operations. For members of type T::Ptr (i.e.  intrusive_ptr<T>),
this can result in a double free when multiple threads access the same variable
and at least one of them writes to the variable.

This commit makes use of std::atomic<T> for more T (it removes the additional
constraint sizeof(T) <= sizeof(void*)) and uses a type including a mutex for
load and store operations as a fallback.
2022-05-03 12:02:46 +02:00
..
CMakeLists.txt Replace Copyright header with a short version, part II 2019-02-25 15:09:36 +01:00
class_lexer.ll Icinga DB: Make sure object relationships are handled correctly 2021-11-12 13:34:57 +01:00
class_parser.yy Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00
classcompiler.cpp Replace EventuallyAtomic with AtomicOrLocked which falls back to a mutex 2022-05-03 12:02:46 +02:00
classcompiler.hpp Icinga DB: Make sure object relationships are handled correctly 2021-11-12 13:34:57 +01:00
mkclass.cpp Replace Copyright header with a short version, part I 2019-02-25 14:48:22 +01:00