From 727d3541a122795b405208242e6fdf7f8b5add07 Mon Sep 17 00:00:00 2001 From: ame Date: Mon, 29 Jun 2026 05:48:58 -0500 Subject: :detatch fix and math.random --- src/math.c | 17 +++++++++++++++++ src/math.h | 2 ++ src/reg.c | 2 ++ src/thread.c | 2 +- 4 files changed, 22 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/math.c b/src/math.c index 3e36e3b..75cd578 100644 --- a/src/math.c +++ b/src/math.c @@ -46,3 +46,20 @@ int l_lcm(lua_State* L){ free(nums); return 1; } + +int l_random(lua_State* L){ + size_t min = 1; + switch(lua_gettop(L)){ + case 2: + min = lua_tointeger(L, 1); + lua_remove(L, 1); + case 1: + lua_pushinteger(L, (rand() % (lua_tointeger(L, 1) - min + 1)) + min); + break; + case 0: + default: + lua_pushnumber(L, (double)rand() / (double)RAND_MAX); + } + + return 1; +} diff --git a/src/math.h b/src/math.h index 17e477e..7731831 100644 --- a/src/math.h +++ b/src/math.h @@ -3,11 +3,13 @@ int l_lcm(lua_State*); int l_gcd(lua_State*); +int l_random(lua_State*); #define clean_lullaby_math luaI_nothing static const luaL_Reg math_function_list [] = { {"lcm",l_lcm}, + {"random",l_random}, //{"gcd",l_gcd}, {NULL,NULL} diff --git a/src/reg.c b/src/reg.c index b90e03d..c57cdf7 100644 --- a/src/reg.c +++ b/src/reg.c @@ -8,6 +8,7 @@ #include "test.h" #include "config.h" #include "lullaby.h" +#include #define open_common(name, config)\ int luaopen_lullaby_##name (lua_State* L){\ @@ -38,6 +39,7 @@ lua_settable(L, T); int luaopen_lullaby(lua_State* L) { + srand(time(NULL)); lua_newtable(L); int top = lua_gettop(L); diff --git a/src/thread.c b/src/thread.c index cd2eb5f..f34f314 100644 --- a/src/thread.c +++ b/src/thread.c @@ -213,7 +213,7 @@ int _thread_detach(lua_State* L){ lua_pushstring(L, "_"); lua_gettable(L, 1); struct thread_info* info = lua_touserdata(L, -1); - lua_getmetatable(L, -1); + lua_getmetatable(L, 1); int idx = lua_gettop(L); luaI_tsetnil(L, idx, "__gc"); -- cgit v1.2.3