SAPI: Fix seed parameter truncation for LuaPseudoRandom constructor
authorkwolekr <kwolekr@minetest.net>
Mon, 26 Oct 2015 08:01:01 +0000 (04:01 -0400)
committerkwolekr <kwolekr@minetest.net>
Mon, 26 Oct 2015 08:04:52 +0000 (04:04 -0400)
Also fix a potential seed truncation issue on platforms where the
range of ptrdiff_t (the underlying type of lua_Integer) is too small.

src/script/lua_api/l_noise.cpp

index 43dd320235f52b0947599c05dc3b5ca7137930cf..6dcffa31ca6282dc4807f3c0f9ff5359f9e48765 100644 (file)
@@ -440,7 +440,7 @@ int LuaPseudoRandom::create_object(lua_State *L)
 {
        NO_MAP_LOCK_REQUIRED;
 
-       int seed = luaL_checknumber(L, 1);
+       u64 seed = luaL_checknumber(L, 1);
        LuaPseudoRandom *o = new LuaPseudoRandom(seed);
        *(void **)(lua_newuserdata(L, sizeof(void *))) = o;
        luaL_getmetatable(L, className);
@@ -537,8 +537,8 @@ int LuaPcgRandom::create_object(lua_State *L)
 {
        NO_MAP_LOCK_REQUIRED;
 
-       lua_Integer seed = luaL_checknumber(L, 1);
-       LuaPcgRandom *o  = lua_isnumber(L, 2) ?
+       u64 seed = luaL_checknumber(L, 1);
+       LuaPcgRandom *o = lua_isnumber(L, 2) ?
                new LuaPcgRandom(seed, lua_tointeger(L, 2)) :
                new LuaPcgRandom(seed);
        *(void **)(lua_newuserdata(L, sizeof(void *))) = o;