Index: src/OFOnce.m ================================================================== --- src/OFOnce.m +++ src/OFOnce.m @@ -47,15 +47,16 @@ /* Avoid atomic operations in case it's already done. */ if (*control == 2) return; if (OFAtomicIntCompareAndSwap(control, 0, 1)) { - function(); + OFAcquireMemoryBarrier(); - OFMemoryBarrier(); - + function(); OFAtomicIntIncrease(control); + + OFReleaseMemoryBarrier(); } else while (*control == 1) OFYieldThread(); #elif defined(OF_AMIGAOS) bool run = false;