Clock component removed from 'luaL_makeseed'

'clock' can be quite slow on some machines.
This commit is contained in:
Roberto Ierusalimschy
2023-03-23 16:01:16 -03:00
parent 5a04f1851e
commit 86e8039a72
4 changed files with 9 additions and 11 deletions

View File

@@ -1094,8 +1094,8 @@ static void warnfon (void *ud, const char *message, int tocont) {
/*
** A function to compute an unsigned int with some level of
** randomness. Rely on Address Space Layout Randomization (if present),
** current time, and clock.
** randomness. Rely on Address Space Layout Randomization (if present)
** and the current time.
*/
#if !defined(luai_makeseed)
@@ -1115,18 +1115,16 @@ static void warnfon (void *ud, const char *message, int tocont) {
static unsigned int luai_makeseed (void) {
unsigned int buff[sof(void*) + sof(clock_t) + sof(time_t)];
unsigned int buff[sof(void*) + sof(time_t)];
unsigned int res;
unsigned int *b = buff;
clock_t c = clock();
time_t t = time(NULL);
void *h = buff;
addbuff(b, h); /* local variable's address */
addbuff(b, c); /* clock */
addbuff(b, t); /* time */
res = buff[0];
for (b = buff + 1; b < buff + sof(buff); b++)
res += *b;
res ^= (res >> 3) + (res << 7) + *b;
return res;
}