mirror of
https://github.com/Icinga/icinga2.git
synced 2026-04-22 14:47:07 -04:00
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. |
||
|---|---|---|
| .. | ||
| class_lexer.ll | ||
| class_parser.yy | ||
| classcompiler.cpp | ||
| classcompiler.hpp | ||
| CMakeLists.txt | ||
| mkclass.cpp | ||