Config: Fix cache not being invalidated when callbacks are suppressed

The config version should always be incremented whenever config is
changed, regardless of callbacks being suppressed or not.
Otherwise, getters can return stale data until another config change
(with callbacks enabled) happens.
This commit is contained in:
Léo Lam 2020-12-29 19:46:41 +01:00
parent 351fb71653
commit 9ffd345df0
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741

View File

@ -71,11 +71,14 @@ void AddConfigChangedCallback(ConfigChangedCallback func)
void OnConfigChanged()
{
// Increment the config version to invalidate caches.
// To ensure that getters do not return stale data, this should always be done
// even when callbacks are suppressed.
s_config_version.fetch_add(1, std::memory_order_relaxed);
if (s_callback_guards)
return;
s_config_version.fetch_add(1, std::memory_order_relaxed);
for (const auto& callback : s_callbacks)
callback();
}