diff options
| author | 2023-07-15 12:56:38 +0100 | |
|---|---|---|
| committer | 2023-07-15 12:56:38 +0100 | |
| commit | ccb7b056d604348f072e77d9b134a3f47e983fcb (patch) | |
| tree | c9b46064fea0baaad86e13f4ee1597ed4e24a10d /src/helperfuncs.cpp | |
| parent | Rename several Windows files to use the same naming scheme. (diff) | |
Replace rand/rand_s/random with the C++11 random number generator.
Diffstat (limited to 'src/helperfuncs.cpp')
| -rw-r--r-- | src/helperfuncs.cpp | 22 |
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 } |
