diff options
author | Campbell Barton <ideasman42@gmail.com> | 2014-04-02 03:09:48 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2014-04-02 03:09:48 +0400 |
commit | 1d9e0c373d830daccba40fbb35046005cb84b463 (patch) | |
tree | 9e02ee7557042de5796b5417c45a820ee94f3a10 /source/blender/blenlib/intern/rand.c | |
parent | da4b90a331e7b7ca72c510f0c62781427ba77d3e (diff) |
Fix for BLI_rng_shuffle_array noted by mont29
Diffstat (limited to 'source/blender/blenlib/intern/rand.c')
-rw-r--r-- | source/blender/blenlib/intern/rand.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/source/blender/blenlib/intern/rand.c b/source/blender/blenlib/intern/rand.c index 75ce860c8e8..5d78608e70c 100644 --- a/source/blender/blenlib/intern/rand.c +++ b/source/blender/blenlib/intern/rand.c @@ -140,15 +140,13 @@ void BLI_rng_shuffle_array(RNG *rng, void *data, unsigned int elem_size_i, unsig unsigned int i = elem_tot; void *temp; - if (elem_tot == 0) { + if (elem_tot <= 1) { return; } temp = malloc(elem_size); - /* XXX Shouldn't it rather be "while (i--) {" ? - * Else we have no guaranty first (0) element has a chance to be shuffled... --mont29 */ - while (--i) { + while (i--) { unsigned int j = BLI_rng_get_uint(rng) % elem_tot; if (i != j) { void *iElem = (unsigned char *)data + i * elem_size_i; |