Fix Lua PseudoRandom seeds being mangled

closes #14237
This commit is contained in:
sfan5 2024-01-10 20:00:14 +01:00
parent e83530d40b
commit d20f1182f2
2 changed files with 8 additions and 5 deletions

@ -1,8 +1,11 @@
local function test_random() local function test_random()
-- Try out PseudoRandom -- We have comprehensive unit tests in C++, this is just to make sure the API code isn't messing up
local pseudo = PseudoRandom(13) local pr = PseudoRandom(13)
assert(pseudo:next() == 22290) assert(pr:next() == 22290)
assert(pseudo:next() == 13854) assert(pr:next() == 13854)
local pr2 = PseudoRandom(-101)
assert(pr2:next(0, 100) == 35)
end end
unittests.register("test_random", test_random) unittests.register("test_random", test_random)

@ -433,7 +433,7 @@ int LuaPseudoRandom::create_object(lua_State *L)
{ {
NO_MAP_LOCK_REQUIRED; NO_MAP_LOCK_REQUIRED;
u64 seed = luaL_checknumber(L, 1); s32 seed = luaL_checkinteger(L, 1);
LuaPseudoRandom *o = new LuaPseudoRandom(seed); LuaPseudoRandom *o = new LuaPseudoRandom(seed);
*(void **)(lua_newuserdata(L, sizeof(void *))) = o; *(void **)(lua_newuserdata(L, sizeof(void *))) = o;
luaL_getmetatable(L, className); luaL_getmetatable(L, className);