Author: manx
Date: Fri May 10 15:39:12 2024
New Revision: 20750
URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20750
Log:
[Imp] mptRandom: Add reinit_global_random() function for fuzzer builds to allow deterministic consecutive fuzzer runs in the same process.
Modified:
trunk/OpenMPT/common/mptRandom.cpp
trunk/OpenMPT/common/mptRandom.h
Modified: trunk/OpenMPT/common/mptRandom.cpp
==============================================================================
--- trunk/OpenMPT/common/mptRandom.cpp Fri May 10 15:32:21 2024 (r20749)
+++ trunk/OpenMPT/common/mptRandom.cpp Fri May 10 15:39:12 2024 (r20750)
@@ -69,6 +69,16 @@
return g_global_prng;
}
+#ifdef MPT_BUILD_FUZZER
+void reinit_global_random()
+{
+ global_prng().~thread_safe_prng<mpt::default_prng>();
+ global_random_device().~random_device();
+ new(&global_random_device()) mpt::random_device{};
+ new(&global_prng()) thread_safe_prng<mpt::default_prng>{global_random_device()};
+}
+#endif // MPT_BUILD_FUZZER
+
#endif // MODPLUG_TRACKER && !MPT_BUILD_WINESUPPORT
} // namespace mpt
Modified: trunk/OpenMPT/common/mptRandom.h
==============================================================================
--- trunk/OpenMPT/common/mptRandom.h Fri May 10 15:32:21 2024 (r20749)
+++ trunk/OpenMPT/common/mptRandom.h Fri May 10 15:39:12 2024 (r20750)
@@ -128,6 +128,10 @@
mpt::random_device & global_random_device();
mpt::thread_safe_prng<mpt::default_prng> & global_prng();
+#ifdef MPT_BUILD_FUZZER
+void reinit_global_random();
+#endif // MPT_BUILD_FUZZER
+
#if defined(MODPLUG_TRACKER) && !defined(MPT_BUILD_WINESUPPORT)
void set_global_random_device(mpt::random_device *rd);
void set_global_prng(mpt::thread_safe_prng<mpt::default_prng> *rng);
|