aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/shared/Utilities/Util.cpp5
-rwxr-xr-xsrc/server/shared/Utilities/Util.h5
-rwxr-xr-xsrc/server/worldserver/Master.cpp4
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