diff --git a/src/server/shared/Utilities/Util.cpp b/src/server/shared/Utilities/Util.cpp index 52ce74be8f..d3ae82e4ff 100755 --- a/src/server/shared/Utilities/Util.cpp +++ b/src/server/shared/Utilities/Util.cpp @@ -31,6 +31,11 @@ typedef ACE_TSS SFMTRandTSS; static SFMTRandTSS sfmtRand; +void init_sfmt() +{ + sfmtRand->RandomInit((int)(time(0))); +} + int32 irand(int32 min, int32 max) { return int32(sfmtRand->IRandom(min, max)); diff --git a/src/server/shared/Utilities/Util.h b/src/server/shared/Utilities/Util.h index 4c2c193699..1a542ff15e 100755 --- a/src/server/shared/Utilities/Util.h +++ b/src/server/shared/Utilities/Util.h @@ -24,6 +24,11 @@ #include #include +#ifdef USE_SFMT_FOR_RNG + // Initialize SFMT before first use, if enabled. + void init_sfmt(); +#endif + // Searcher for map of structs template struct Finder { diff --git a/src/server/worldserver/Master.cpp b/src/server/worldserver/Master.cpp index d84cfc1a4a..892328dcc8 100755 --- a/src/server/worldserver/Master.cpp +++ b/src/server/worldserver/Master.cpp @@ -139,7 +139,9 @@ int Master::Run() #ifdef USE_SFMT_FOR_RNG sLog->outString("\n"); sLog->outString("SFMT has been enabled as the random number generator, if worldserver"); - sLog->outString("freezes or crashes randomly, first, try disabling SFMT in CMAKE configuration"); + sLog->outString("freezes or crashes randomly, first, try disabling SFMT in CMAKE configuration."); + sLog->outString("Initializing SFMT before first use."); + init_sfmt(); sLog->outString("\n"); #endif //USE_SFMT_FOR_RNG