Update "open-simplex-noise-in-c" to fix undefined signed overflow.
This commit is contained in:
11
thirdparty/misc/open-simplex-noise.c
vendored
11
thirdparty/misc/open-simplex-noise.c
vendored
@ -189,14 +189,15 @@ int open_simplex_noise(int64_t seed, struct osn_context *ctx)
|
||||
permGradIndex3D = ctx->permGradIndex3D;
|
||||
// -- GODOT end --
|
||||
|
||||
uint64_t seedU = seed;
|
||||
for (i = 0; i < 256; i++)
|
||||
source[i] = (int16_t) i;
|
||||
seed = seed * 6364136223846793005LL + 1442695040888963407LL;
|
||||
seed = seed * 6364136223846793005LL + 1442695040888963407LL;
|
||||
seed = seed * 6364136223846793005LL + 1442695040888963407LL;
|
||||
seedU = seedU * 6364136223846793005ULL + 1442695040888963407ULL;
|
||||
seedU = seedU * 6364136223846793005ULL + 1442695040888963407ULL;
|
||||
seedU = seedU * 6364136223846793005ULL + 1442695040888963407ULL;
|
||||
for (i = 255; i >= 0; i--) {
|
||||
seed = seed * 6364136223846793005LL + 1442695040888963407LL;
|
||||
r = (int)((seed + 31) % (i + 1));
|
||||
seedU = seedU * 6364136223846793005ULL + 1442695040888963407ULL;
|
||||
r = (int)((seedU + 31) % (i + 1));
|
||||
if (r < 0)
|
||||
r += (i + 1);
|
||||
perm[i] = source[r];
|
||||
|
||||
Reference in New Issue
Block a user