[Base] Use function-local static for global_mutex

File-scope static initialization order is undefined across translation
units. Code that acquires the global critical region during early startup
could run before the mutex constructor, operating on uninitialized state.
A function-local static is constructed on first use, guaranteeing the
mutex is initialized before any caller can access it.
This commit is contained in:
Herman S.
2026-02-10 00:18:54 +09:00
parent eb914ae77d
commit de63bb18a6

View File

@@ -65,9 +65,9 @@ bool xe_fast_mutex::try_lock() {
return TryEnterCriticalSection(fast_crit(this)); return TryEnterCriticalSection(fast_crit(this));
} }
#endif #endif
// chrispy: moved this out of body of function to eliminate the initialization global_mutex_type& global_critical_region::mutex() {
// guards static global_mutex_type global_mutex;
static global_mutex_type global_mutex; return global_mutex;
global_mutex_type& global_critical_region::mutex() { return global_mutex; } }
} // namespace xe } // namespace xe