mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-13 16:45:20 +02:00
Fix Lua PcgRandom
Before, this lua code led to a crash: local pcg = PcgRandom(42) local value = pcg:next() This was because if you called s32 PcgRandom::range(min, max) with the minimum and maximum possible values for s32 integers (which the lua binding code did), u32 PcgRandom::range(bound) got called with 0 as the bound. The bound however is one above the maximum value, so 0 is a "special" value to pass to this function. This commit fixes the lua crash by assigning the RNG's full range to the bound 0, which is also fits to the "maximum is bound - 1" principle, as (u32)-1 is the maximum value in the u32 range.
This commit is contained in:
@@ -101,6 +101,9 @@ void TestRandom::testPcgRandomRange()
|
||||
|
||||
EXCEPTION_CHECK(PrngException, pr.range(5, 1));
|
||||
|
||||
// Regression test for bug 3027
|
||||
pr.range(pr.RANDOM_MIN, pr.RANDOM_MAX);
|
||||
|
||||
for (u32 i = 0; i != 32768; i++) {
|
||||
int min = (pr.next() % 3000) - 500;
|
||||
int max = (pr.next() % 3000) - 500;
|
||||
|
Reference in New Issue
Block a user