aboutsummaryrefslogtreecommitdiff
path: root/src/helperfuncs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/helperfuncs.cpp')
-rw-r--r--src/helperfuncs.cpp22
1 files changed, 6 insertions, 16 deletions
diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp
index 203c5de04..f3a994007 100644
--- a/src/helperfuncs.cpp
+++ b/src/helperfuncs.cpp
@@ -28,10 +28,7 @@
*/
-#ifdef _WIN32
-#define _CRT_RAND_S
-#include <stdlib.h>
-#endif
+#include <random>
#include "inspircd.h"
#include "timeutils.h"
@@ -464,17 +461,10 @@ void InspIRCd::DefaultGenRandom(char* output, size_t max)
#if defined HAS_ARC4RANDOM_BUF
arc4random_buf(output, max);
#else
- for (unsigned int i = 0; i < max; ++i)
-# ifdef _WIN32
- {
- unsigned int uTemp;
- if(rand_s(&uTemp) != 0)
- output[i] = rand();
- else
- output[i] = uTemp;
- }
-# else
- output[i] = random();
-# endif
+ static std::random_device device;
+ static std::mt19937 engine(device());
+ static std::uniform_int_distribution<char> dist;
+ for (size_t i = 0; i < max; ++i)
+ output[i] = dist(engine);
#endif
}