diff options
author | Elron103 <scarymovie87@gmx.de> | 2012-02-25 02:16:08 +0100 |
---|---|---|
committer | click <click@gonnamakeyou.com> | 2012-02-25 02:16:08 +0100 |
commit | 28310f0938a8776d0cb42ba8a64f125cc42bff6b (patch) | |
tree | fcaf1efdd97102353535ea52b2a0f57ab21dbbf6 /src | |
parent | d505e8ccc9190d4a9c4c7f13c2a45f484bd31234 (diff) |
Core: Fix the SFMT randgen-initbug
Signed-off-by: click <click@gonnamakeyou.com>
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/shared/Utilities/Util.cpp | 5 | ||||
-rwxr-xr-x | src/server/shared/Utilities/Util.h | 5 | ||||
-rwxr-xr-x | src/server/worldserver/Master.cpp | 4 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/server/shared/Utilities/Util.cpp b/src/server/shared/Utilities/Util.cpp index 52ce74be8f8..d3ae82e4ff3 100755 --- a/src/server/shared/Utilities/Util.cpp +++ b/src/server/shared/Utilities/Util.cpp @@ -31,6 +31,11 @@ typedef ACE_TSS<SFMTRand> 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 4c2c1936993..1a542ff15e1 100755 --- a/src/server/shared/Utilities/Util.h +++ b/src/server/shared/Utilities/Util.h @@ -24,6 +24,11 @@ #include <string> #include <vector> +#ifdef USE_SFMT_FOR_RNG + // Initialize SFMT before first use, if enabled. + void init_sfmt(); +#endif + // Searcher for map of structs template<typename T, class S> struct Finder { diff --git a/src/server/worldserver/Master.cpp b/src/server/worldserver/Master.cpp index d84cfc1a4a4..892328dcc81 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 |