1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2025-02-22 04:37:13 +01:00

Add a secondary seed function that fills the entire seed size. Even on x64 windows. Where long is 32 bit.

This commit is contained in:
Sandu Liviu Catalin 2019-05-21 21:14:19 +03:00
parent d52507e824
commit 68e00bce02

View File

@ -82,6 +82,29 @@ SizeT GenerateSeed()
return c;
}
// ------------------------------------------------------------------------------------------------
SizeT GenerateSeed2()
{
struct {
std::clock_t c;
std::time_t t;
#ifdef SQMOD_OS_WINDOWS
int p;
#else
pid_t p;
#endif
} data;
data.c = std::clock();
data.t = std::time(nullptr);
#ifdef SQMOD_OS_WINDOWS
data.p = _getpid();
#else
data.p = getpid();
#endif
// Mangle and return result
return FnvHash(reinterpret_cast< const uint8_t * >(&data), sizeof(data));
}
// ------------------------------------------------------------------------------------------------
void ReseedRandom()
{
@ -382,6 +405,7 @@ void Register_Random(HSQUIRRELVM vm)
{
RootTable(vm).Bind(_SC("SqRand"), Table(vm)
.Func(_SC("GenSeed"), &GenerateSeed)
.Func(_SC("GenSeed2"), &GenerateSeed2)
.Overload< void (*)(void) >(_SC("Reseed"), &ReseedRandom)
.Overload< void (*)(Uint32) >(_SC("Reseed"), &ReseedRandom)
.Overload< void (*)(void) >(_SC("Reseed32"), &ReseedRandom32)