diff options
Diffstat (limited to 'source')
| -rw-r--r-- | source/photon_spin_random.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/source/photon_spin_random.c b/source/photon_spin_random.c index 5d76806..abb2b03 100644 --- a/source/photon_spin_random.c +++ b/source/photon_spin_random.c @@ -55,8 +55,11 @@ static void generate_block(photon_spin_random_t *rng) { k++; } - /* Check for collision patterns and perturb if needed */ - if (rng->elements[k - 1] == rng->elements[k - 2] && + /* Check for collision patterns and perturb if needed. + * Note: k is always 5, 10, 15, or 20 here (after the inner loop), + * so k-5 is always >= 0 (safe array access) */ + if (k >= 5 && + rng->elements[k - 1] == rng->elements[k - 2] && rng->elements[k - 3] == rng->elements[k - 4]) { rng->elements[k - 1] += mix[i] ^ 81016U; rng->elements[k - 2] += mix[i] ^ 297442265U; |
