Just a quick heads up that we needed to introduce a breaking change to JUCE’s Atomic class. Before this change the following code would assert:
int i; int* a (&i); Atomic<int*> b (a); jassert (++a == ++b);
This is because pointer arithmetic would behave differently on real pointers vs. pointers wrapped in JUCE’s Atomic class: Atomic would always increment/decrement by only a single byte. This was not only super confusing but would also lead to un-aligned memory access (for example:
*(++a) = 0).
Unfortunately, anybody relying on JUCE’s old and confusing behaviour will need to update their code or risk random behaviour or - worse - crashes.