mirror of https://github.com/Icinga/icinga2.git
abe2dfa763
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. |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
class_lexer.ll | ||
class_parser.yy | ||
classcompiler.cpp | ||
classcompiler.hpp | ||
mkclass.cpp |