Author: Andreas Tille <tille@debian.org>
Last-Update: 2025-07-28
Description: Fix some "implicit declaration" errors with gcc-15

--- a/ext/curses/chstr.c
+++ b/ext/curses/chstr.c
@@ -44,6 +44,14 @@ and attributes in `chstr` buffers are no
 
 #include "_helpers.c"
 
+#if LUA_VERSION_NUM >= 502
+#define lua_strlen lua_rawlen
+#define luaL_reg luaL_Reg
+#define MY_LUA_REGISTER(L, name, funcs) luaL_newlib(L, funcs)
+#else
+#define lua_strlen lua_objlen
+#define MY_LUA_REGISTER(L, name, funcs) luaL_register(L, name, funcs)
+#endif
 
 static const char *CHSTRMETA = "curses:chstr";
 
@@ -267,7 +275,7 @@ luaopen_curses_chstr(lua_State *L)
 {
 	int t, mt;
 
-	luaL_register(L, "curses.chstr", curses_chstr_fns);
+        MY_LUA_REGISTER(L, "curses.chstr", curses_chstr_fns);
 	t = lua_gettop(L);
 
 	lua_createtable(L, 0, 1);		/* u = {} */
--- a/ext/curses/window.c
+++ b/ext/curses/window.c
@@ -42,6 +42,11 @@
 
 #include "ext/curses/chstr.c"
 
+#if LUA_VERSION_NUM >= 502
+#define MY_LUA_REGISTER(L, name, funcs) luaL_newlib(L, funcs)
+#else
+#define MY_LUA_REGISTER(L, name, funcs) luaL_register(L, name, funcs)
+#endif
 
 static const char *WINDOWMETA = "curses:window";
 
@@ -1913,7 +1918,8 @@ luaopen_curses_window(lua_State *L)
 {
 	int t, mt;
 
-	luaL_register(L, "curses.window", curses_window_fns);
+	MY_LUA_REGISTER(L, "curses.window", curses_window_fns);
+
 	t = lua_gettop(L);
 
 	luaL_newmetatable(L, WINDOWMETA);
--- a/ext/curses.c
+++ b/ext/curses.c
@@ -93,6 +93,11 @@
 static const char *STDSCR_REGISTRY	= "curses:stdscr";
 static const char *RIPOFF_TABLE		= "curses:ripoffline";
 
+#if LUA_VERSION_NUM >= 502
+#define MY_LUA_REGISTER(L, name, funcs) luaL_newlib(L, funcs)
+#else
+#define MY_LUA_REGISTER(L, name, funcs) luaL_register(L, name, funcs)
+#endif
 
 /***
 Create a new line drawing buffer instance.
@@ -1555,7 +1560,7 @@ luaopen_curses_c(lua_State *L)
 	luaopen_curses_window(L);
 	luaopen_curses_chstr(L);
 
-	luaL_register(L, "curses", curseslib);
+	MY_LUA_REGISTER(L, "curses", curseslib);
 	lua_pushliteral(L, "lcurses for " LUA_VERSION " / " PACKAGE_STRING);
 	lua_setfield(L, -2, "version");
 
