summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlat9nq <lat9nq@gmail.com>2022-04-05 00:37:46 -0400
committerlat9nq <lat9nq@gmail.com>2022-04-05 19:55:56 -0400
commitb976cac49dd7bbfc461802d64d467f9c5b73ce3b (patch)
treec09a194cadf961f124e064725014538f0eafe8b1 /src
parent983916e9193a65d2cbd55039cc1569c46a7081c1 (diff)
k_system_control: Fix data race
`return distribution(gen)` is a data race between a read and a write in two threads, reported by TSan. Remove static random number generators so they aren't using the same generator.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp
index 8027bec00..7765e7848 100644
--- a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp
+++ b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp
@@ -148,9 +148,9 @@ u64 GenerateUniformRange(u64 min, u64 max, F f) {
} // Anonymous namespace
u64 KSystemControl::GenerateRandomU64() {
- static std::random_device device;
- static std::mt19937 gen(device());
- static std::uniform_int_distribution<u64> distribution(1, std::numeric_limits<u64>::max());
+ std::random_device device;
+ std::mt19937 gen(device());
+ std::uniform_int_distribution<u64> distribution(1, std::numeric_limits<u64>::max());
return distribution(gen);
}