Noise: Prevent unittest crash caused by division by zero
authorSmallJoker <mk939@ymail.com>
Sat, 29 Jul 2017 17:01:14 +0000 (19:01 +0200)
committerSmallJoker <mk939@ymail.com>
Sat, 29 Jul 2017 17:01:14 +0000 (19:01 +0200)
src/noise.cpp

index f67771b8885e3679b90cc7619cccfd1d73bbedb1..e6ca8a4951cf669c8312275f2b859fc34d2f1297 100644 (file)
@@ -130,7 +130,9 @@ s32 PcgRandom::range(s32 min, s32 max)
        if (max < min)
                throw PrngException("Invalid range (max < min)");
 
-       u32 bound = max - min + 1;
+       // We have to cast to s64 because otherwise this could overflow,
+       // and signed overflow is undefined behavior.
+       u32 bound = (s64)max - (s64)min + 1;
        return range(bound) + min;
 }