SHA256
11
0
forked from pool/lua-toluapp
Files
lua-toluapp/lua-compatibility.patch
Matěj Cepl f65d33d8ae Make the package buildable with LuaJIT.
Add lua-compatibility.patch to cover for the incompatibilities.
2025-10-13 18:38:50 +02:00

731 lines
23 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
SConstruct | 2 ++
config_linux.py | 4 ++--
config_posix.py | 2 +-
include/tolua++.h | 7 +++++--
src/bin/SCsub | 4 ++--
src/bin/lua/all.lua | 2 +-
src/bin/lua/basic.lua | 20 ++++++++++++--------
src/bin/lua/class.lua | 6 +++---
src/bin/lua/clean.lua | 4 ++--
src/bin/lua/compat-5.1.lua | 6 +++---
src/bin/lua/compat.lua | 13 ++++++++-----
src/bin/lua/declaration.lua | 4 ++--
src/bin/lua/feature.lua | 2 +-
src/bin/lua/function.lua | 2 +-
src/bin/lua/package.lua | 20 ++++++++++----------
src/bin/lua/template_class.lua | 8 ++++----
src/bin/tolua.c | 27 ++++++++++++++++-----------
src/lib/tolua_event.c | 18 +++++++++++++++++-
src/lib/tolua_is.c | 2 +-
src/lib/tolua_map.c | 35 ++++++++++++++++++++++-------------
src/lib/tolua_push.c | 6 ++++--
21 files changed, 119 insertions(+), 75 deletions(-)
Index: toluapp-1.0.93/SConstruct
===================================================================
--- toluapp-1.0.93.orig/SConstruct 2025-10-13 18:34:10.155194536 +0200
+++ toluapp-1.0.93/SConstruct 2025-10-13 18:34:11.251071137 +0200
@@ -89,6 +89,8 @@
header = target[:-2] + '.h'
pheader = Dir('.').path + '/' + header
+ print("Generating ", target, " from ", source)
+
tolua = ""
if bootstrap:
if os.name == 'nt':
Index: toluapp-1.0.93/config_linux.py
===================================================================
--- toluapp-1.0.93.orig/config_linux.py 2012-08-24 03:01:53.000000000 +0200
+++ toluapp-1.0.93/config_linux.py 2025-10-13 18:34:11.251503108 +0200
@@ -4,7 +4,7 @@
# Compiler flags (based on Debian's installation of lua)
#LINKFLAGS = ['-g']
-CCFLAGS = ['-I/usr/include/lua50', '-O2', '-ansi', '-Wall']
+CCFLAGS = ['-O2', '-ansi', '-Wall']
#CCFLAGS = ['-I/usr/include/lua50', '-g']
# this is the default directory for installation. Files will be installed on
@@ -18,5 +18,5 @@
prefix = '/usr/local'
# libraries (based on Debian's installation of lua)
-LIBS = ['lua50', 'lualib50', 'dl', 'm']
+LIBS = ['lua', 'dl', 'm']
Index: toluapp-1.0.93/config_posix.py
===================================================================
--- toluapp-1.0.93.orig/config_posix.py 2012-08-24 03:01:53.000000000 +0200
+++ toluapp-1.0.93/config_posix.py 2025-10-13 18:34:11.251778425 +0200
@@ -16,7 +16,7 @@
prefix = '/usr/local'
# libraries
-LIBS = ['lua', 'lualib', 'm']
+LIBS = ['lua', 'm']
Index: toluapp-1.0.93/include/tolua++.h
===================================================================
--- toluapp-1.0.93.orig/include/tolua++.h 2012-08-24 03:01:53.000000000 +0200
+++ toluapp-1.0.93/include/tolua++.h 2025-10-13 18:34:11.252055068 +0200
@@ -46,10 +46,13 @@
#include "lua.h"
#include "lauxlib.h"
+#if !defined(LUA_VERSION_NUM) || LUA_VERSION_NUM < 502
+# define luaL_getn(L, i) ((int)lua_objlen(L, i))
+#endif
+
struct tolua_Error
{
- int index;
- int array;
+ int index; int array;
const char* type;
};
typedef struct tolua_Error tolua_Error;
Index: toluapp-1.0.93/src/bin/SCsub
===================================================================
--- toluapp-1.0.93.orig/src/bin/SCsub 2012-08-24 03:01:53.000000000 +0200
+++ toluapp-1.0.93/src/bin/SCsub 2025-10-13 18:34:11.252301470 +0200
@@ -5,8 +5,8 @@
]
-toluabind = env.LuaBinding('toluabind.c', 'tolua_scons.pkg', 'tolua', bootstrap = True)
+#toluabind = env.LuaBinding('toluabind.c', 'tolua_scons.pkg', 'tolua', bootstrap = True)
-env.bin_target = env.Program('#/bin/'+env['tolua_bin'], src + [toluabind], LIBS = ['$tolua_lib'] + env['LIBS'])
+env.bin_target = env.Program('#/bin/'+env['tolua_bin'], src, LIBS = ['$tolua_lib'] + env['LIBS'])
env.bootstrap_target = env.Program('#/bin/'+env['TOLUAPP_BOOTSTRAP'], src + ['toluabind_default.c', env.lib_target_static], LIBS = env['LIBS'])
Index: toluapp-1.0.93/src/bin/lua/all.lua
===================================================================
--- toluapp-1.0.93.orig/src/bin/lua/all.lua 2025-10-13 18:33:57.203290200 +0200
+++ toluapp-1.0.93/src/bin/lua/all.lua 2025-10-13 18:34:11.252570501 +0200
@@ -1,8 +1,8 @@
dofile(path.."compat-5.1.lua")
dofile(path.."compat.lua")
-dofile(path.."basic.lua")
dofile(path.."feature.lua")
dofile(path.."verbatim.lua")
+dofile(path.."basic.lua")
dofile(path.."code.lua")
dofile(path.."typedef.lua")
dofile(path.."container.lua")
Index: toluapp-1.0.93/src/bin/lua/basic.lua
===================================================================
--- toluapp-1.0.93.orig/src/bin/lua/basic.lua 2025-10-13 18:33:57.203847677 +0200
+++ toluapp-1.0.93/src/bin/lua/basic.lua 2025-10-13 18:34:11.252831080 +0200
@@ -10,7 +10,8 @@
-- the author has no obligation to provide maintenance, support, updates,
-- enhancements, or modifications.
-
+-- Compatibility shim
+local unpack = table.unpack or unpack
-- Basic C types and their corresponding Lua types
-- All occurrences of "char*" will be replaced by "_cstring",
-- and all occurrences of "void*" will be replaced by "_userdata"
@@ -75,8 +76,8 @@
end
function applyrenaming (s)
- for i=1,getn(_renaming) do
- local m,n = gsub(s,_renaming[i].old,_renaming[i].new)
+ for i,v in ipairs(_renaming) do
+ local m,n = gsub(s,v.old,v.new)
if n ~= 0 then
return m
end
@@ -252,7 +253,8 @@
-- concatenate all parameters, following output rules
function concatparam (line, ...)
local i=1
- while i<=arg.n do
+ local arg={...}
+ while i<=#arg do
if _cont and not strfind(_cont,'[%(,"]') and
strfind(arg[i],"^[%a_~]") then
line = line .. ' '
@@ -263,7 +265,7 @@
end
i = i+1
end
- if strfind(arg[arg.n],"[%/%)%;%{%}]$") then
+ if strfind(arg[#arg],"[%/%)%;%{%}]$") then
_cont=nil line = line .. '\n'
end
return line
@@ -272,7 +274,8 @@
-- output line
function output (...)
local i=1
- while i<=arg.n do
+ local arg = {...}
+ while i<=#arg do
if _cont and not strfind(_cont,'[%(,"]') and
strfind(arg[i],"^[%a_~]") then
write(' ')
@@ -283,7 +286,7 @@
end
i = i+1
end
- if strfind(arg[arg.n],"[%/%)%;%{%}]$") then
+ if strfind(arg[#arg],"[%/%)%;%{%}]$") then
_cont=nil write('\n')
end
end
@@ -373,9 +376,10 @@
end
+
-- called to output an error message
function output_error_hook(...)
- return string.format(...)
+ return string.format(unpack{...})
end
-- custom pushers
Index: toluapp-1.0.93/src/bin/lua/class.lua
===================================================================
--- toluapp-1.0.93.orig/src/bin/lua/class.lua 2025-10-13 18:33:57.204120828 +0200
+++ toluapp-1.0.93/src/bin/lua/class.lua 2025-10-13 18:34:11.253061558 +0200
@@ -92,7 +92,7 @@
self.btype = typevar(self.base)
self.ctype = 'const '..self.type
if self.extra_bases then
- for i=1,table.getn(self.extra_bases) do
+ for i=1,#self.extra_bases do
self.extra_bases[i] = typevar(self.extra_bases[i])
end
end
@@ -138,9 +138,9 @@
-- Expects the name, the base (array) and the body of the class.
function Class (n,p,b)
- if table.getn(p) > 1 then
+ if #p > 1 then
b = string.sub(b, 1, -2)
- for i=2,table.getn(p),1 do
+ for i=2,#p,1 do
b = b.."\n tolua_inherits "..p[i].." __"..p[i].."__;\n"
end
b = b.."\n}"
Index: toluapp-1.0.93/src/bin/lua/clean.lua
===================================================================
--- toluapp-1.0.93.orig/src/bin/lua/clean.lua 2025-10-13 18:33:57.204330493 +0200
+++ toluapp-1.0.93/src/bin/lua/clean.lua 2025-10-13 18:34:11.253247337 +0200
@@ -19,14 +19,14 @@
}
function mask (s)
- for i = 1,getn(MASK) do
+ for i = 1,#MASK do
s = gsub(s,MASK[i][2],MASK[i][1])
end
return s
end
function unmask (s)
- for i = 1,getn(MASK) do
+ for i = 1,#MASK do
s = gsub(s,MASK[i][1],MASK[i][2])
end
return s
Index: toluapp-1.0.93/src/bin/lua/compat-5.1.lua
===================================================================
--- toluapp-1.0.93.orig/src/bin/lua/compat-5.1.lua 2025-10-13 18:33:57.204792497 +0200
+++ toluapp-1.0.93/src/bin/lua/compat-5.1.lua 2025-10-13 18:34:11.253449110 +0200
@@ -25,10 +25,10 @@
end
end
- local f = load(getfile, path)
+ local f, errmsg = load(getfile, path)
if not f then
-
- error("error loading file "..path)
+
+ error("error loading file "..path ..": " .. errmsg)
end
return f()
end
Index: toluapp-1.0.93/src/bin/lua/compat.lua
===================================================================
--- toluapp-1.0.93.orig/src/bin/lua/compat.lua 2025-10-13 18:33:57.204992803 +0200
+++ toluapp-1.0.93/src/bin/lua/compat.lua 2025-10-13 18:34:11.253523003 +0200
@@ -40,18 +40,17 @@
end
end
-function dostring(s) return do_(loadstring(s)) end
+function dostring(s) return do_(load(s)) end
-- function dofile(s) return do_(loadfile(s)) end
-------------------------------------------------------------------
-- Table library
local tab = table
-foreach = tab.foreach
-foreachi = tab.foreachi
-getn = tab.getn
+getn = function (tab) return #tab end
tinsert = tab.insert
tremove = tab.remove
sort = tab.sort
+unpack = table.unpack or unpack
-------------------------------------------------------------------
-- Debug library
@@ -78,7 +77,9 @@
frexp = math.frexp
ldexp = math.ldexp
log = math.log
-log10 = math.log10
+-- Lua PCU 5.1 math.log doesnt read the second argument
+-- and it is ONLY the natural logarithm
+log10 = function(val) return math.log(val) / math.log(10) end
max = math.max
min = math.min
mod = math.mod
@@ -177,6 +178,7 @@
function read (...)
local f = _INPUT
+ local arg = {...}
if rawtype(arg[1]) == 'userdata' then
f = tab.remove(arg, 1)
end
@@ -185,6 +187,7 @@
function write (...)
local f = _OUTPUT
+ local arg = {...}
if rawtype(arg[1]) == 'userdata' then
f = tab.remove(arg, 1)
end
Index: toluapp-1.0.93/src/bin/lua/declaration.lua
===================================================================
--- toluapp-1.0.93.orig/src/bin/lua/declaration.lua 2025-10-13 18:33:57.205763647 +0200
+++ toluapp-1.0.93/src/bin/lua/declaration.lua 2025-10-13 18:34:11.253903711 +0200
@@ -137,7 +137,7 @@
if b then
m = split_c_tokens(string.sub(m, 2, -2), ",")
- for i=1, table.getn(m) do
+ for i=1, #m do
m[i] = string.gsub(m[i],"%s*([%*&])", "%1")
if not isbasic(m[i]) then
if not isenum(m[i]) then _, m[i] = applytypedef("", m[i]) end
@@ -522,7 +522,7 @@
end
-- check the form: mod type* name
- local s1 = gsub(s,"(%b\[\])",function (n) return gsub(n,'%*','\1') end)
+ local s1 = gsub(s,"(%b%[%])",function (n) return gsub(n,'%*','\1') end)
t = split_c_tokens(s1,'%*')
if t.n == 2 then
t[2] = gsub(t[2],'\1','%*') -- restore * in dimension expression
Index: toluapp-1.0.93/src/bin/lua/feature.lua
===================================================================
--- toluapp-1.0.93.orig/src/bin/lua/feature.lua 2025-10-13 18:33:57.206592460 +0200
+++ toluapp-1.0.93/src/bin/lua/feature.lua 2025-10-13 18:34:11.254122316 +0200
@@ -132,7 +132,7 @@
if not fname or fname == '' then
fname = self.name
end
- n = string.gsub(n..'_'.. (fname), "[<>:, \.%*&]", "_")
+ n = string.gsub(n..'_'.. (fname), "[<>:, \\.%*&]", "_")
return n
end
Index: toluapp-1.0.93/src/bin/lua/function.lua
===================================================================
--- toluapp-1.0.93.orig/src/bin/lua/function.lua 2025-10-13 18:33:57.206794233 +0200
+++ toluapp-1.0.93/src/bin/lua/function.lua 2025-10-13 18:34:11.254306698 +0200
@@ -520,7 +520,7 @@
function join(t, sep, first, last)
first = first or 1
- last = last or table.getn(t)
+ last = last or #t
local lsep = ""
local ret = ""
local loop = false
Index: toluapp-1.0.93/src/bin/lua/package.lua
===================================================================
--- toluapp-1.0.93.orig/src/bin/lua/package.lua 2025-10-13 18:34:08.677254902 +0200
+++ toluapp-1.0.93/src/bin/lua/package.lua 2025-10-13 18:34:11.254530681 +0200
@@ -9,7 +9,8 @@
-- the author has no obligation to provide maintenance, support, updates,
-- enhancements, or modifications.
-
+-- Compatibility shim
+local unpack = table.unpack or unpack
-- Package class
-- Represents the whole package being bound.
@@ -39,7 +40,7 @@
self.code = gsub(self.code,"\n%s*%$%]","\2")
self.code = gsub(self.code,"(%b\1\2)", function (c)
tinsert(L,c)
- return "\n#["..getn(L).."]#"
+ return "\n#[".. #L .."]#"
end)
-- avoid preprocessing embedded C code
local C = {}
@@ -47,14 +48,14 @@
self.code = gsub(self.code,"\n%s*%$%>","\4")
self.code = gsub(self.code,"(%b\3\4)", function (c)
tinsert(C,c)
- return "\n#<"..getn(C)..">#"
+ return "\n#<".. #C ..">#"
end)
-- avoid preprocessing embedded C code
self.code = gsub(self.code,"\n%s*%$%{","\5") -- deal with embedded C code
self.code = gsub(self.code,"\n%s*%$%}","\6")
self.code = gsub(self.code,"(%b\5\6)", function (c)
tinsert(C,c)
- return "\n#<"..getn(C)..">#"
+ return "\n#<".. #C..">#"
end)
--self.code = gsub(self.code,"\n%s*#[^d][^\n]*\n", "\n\n") -- eliminate preprocessor directives that don't start with 'd'
@@ -64,7 +65,7 @@
local V = {}
self.code = gsub(self.code,"\n(%s*%$[^%[%]][^\n]*)",function (v)
tinsert(V,v)
- return "\n#"..getn(V).."#"
+ return "\n#".. #V .."#"
end)
-- perform global substitution
@@ -152,14 +153,14 @@
if flags.t then
output("#ifndef Mtolua_typeid\n#define Mtolua_typeid(L,TI,T)\n#endif\n")
end
- foreach(_usertype,function(n,v)
+ for n,v in pairs(_usertype) do
if (not _global_classes[v]) or _global_classes[v]:check_public_access() then
output(' tolua_usertype(tolua_S,"',v,'");')
if flags.t then
output(' Mtolua_typeid(tolua_S,typeid(',v,'), "',v,'");')
end
end
- end)
+ end
output('}')
output('\n')
end
@@ -322,7 +323,7 @@
table.insert(chunk, string.sub(line, 3) .. "\n")
else
local last = 1
- for text, expr, index in string.gfind(line, "(.-)$(%b())()") do
+ for text, expr, index in string.gmatch(line, "(.-)$(%b())()") do
last = index
if text ~= "" then
table.insert(chunk, string.format('table.insert(__ret, %q )', text))
@@ -334,10 +335,9 @@
end
end
table.insert(chunk, '\nreturn table.concat(__ret)\n')
- local f,e = loadstring(table.concat(chunk))
+ local f,e = load(table.concat(chunk), nil, "t", _extra_parameters)
if e then
error("#"..e)
end
- setfenv(f, _extra_parameters)
return f()
end
Index: toluapp-1.0.93/src/bin/lua/template_class.lua
===================================================================
--- toluapp-1.0.93.orig/src/bin/lua/template_class.lua 2025-10-13 18:33:57.207900876 +0200
+++ toluapp-1.0.93/src/bin/lua/template_class.lua 2025-10-13 18:34:11.254772613 +0200
@@ -22,7 +22,7 @@
for i =1 , types.n do
local Il = split_c_tokens(types[i], " ")
- if table.getn(Il) ~= table.getn(self.args) then
+ if #Il ~= #self.args then
error("#invalid parameter count for "..types[i])
end
local bI = self.body
@@ -31,16 +31,16 @@
--Tl[j] = findtype(Tl[j]) or Tl[j]
bI = string.gsub(bI, "([^_%w])"..self.args[j].."([^_%w])", "%1"..Il[j].."%2")
if self.parents then
- for i=1,table.getn(self.parents) do
+ for i=1,#self.parents do
pI[i] = string.gsub(self.parents[i], "([^_%w]?)"..self.args[j].."([^_%w]?)", "%1"..Il[j].."%2")
end
end
end
--local append = "<"..string.gsub(types[i], "%s+", ",")..">"
- local append = "<"..concat(Il, 1, table.getn(Il), ",")..">"
+ local append = "<"..concat(Il, 1, #Il, ",")..">"
append = string.gsub(append, "%s*,%s*", ",")
append = string.gsub(append, ">>", "> >")
- for i=1,table.getn(pI) do
+ for i=1,#pI do
--pI[i] = string.gsub(pI[i], ">>", "> >")
pI[i] = resolve_template_types(pI[i])
end
Index: toluapp-1.0.93/src/bin/tolua.c
===================================================================
--- toluapp-1.0.93.orig/src/bin/tolua.c 2012-08-24 03:01:53.000000000 +0200
+++ toluapp-1.0.93/src/bin/tolua.c 2025-10-13 18:34:11.254974106 +0200
@@ -67,7 +67,11 @@
static void add_extra (lua_State* L, char* value) {
int len;
lua_getglobal(L, "_extra_parameters");
+#if LUA_VERSION_NUM > 501
+ len = lua_rawlen(L, -1);
+#else
len = luaL_getn(L, -1);
+#endif
lua_pushstring(L, value);
lua_rawseti(L, -2, len+1);
lua_pop(L, 1);
@@ -145,7 +149,7 @@
}
lua_pop(L,1);
}
-/* #define TOLUA_SCRIPT_RUN */
+#define TOLUA_SCRIPT_RUN
#ifndef TOLUA_SCRIPT_RUN
{
int tolua_tolua_open (lua_State* L);
@@ -153,16 +157,17 @@
}
#else
{
- char* p;
- char path[BUFSIZ];
- strcpy(path,argv[0]);
- p = strrchr(path,'/');
- if (p==NULL) p = strrchr(path,'\\');
- p = (p==NULL) ? path : p+1;
- sprintf(p,"%s","../src/bin/lua/");
- lua_pushstring(L,path); lua_setglobal(L,"path");
- strcat(path,"all.lua");
- lua_dofile(L,path);
+ lua_pushstring(L, DATAPATH"/"); lua_setglobal(L,"path");
+ if (luaL_loadfile(L, DATAPATH"/all.lua") != 0) {
+ fprintf(stderr, "luaL_loadfile failed\n");
+ return 1;
+ }
+ if (lua_pcall(L, 0,0,0) != 0) {
+ const char *errmsg = lua_tostring(L, -1);
+ fprintf(stderr, "lua_pcall failed: %s\n", errmsg);
+ lua_pop(L, 1);
+ return 1;
+ }
}
#endif
return 0;
Index: toluapp-1.0.93/src/lib/tolua_event.c
===================================================================
--- toluapp-1.0.93.orig/src/lib/tolua_event.c 2012-08-24 03:01:53.000000000 +0200
+++ toluapp-1.0.93/src/lib/tolua_event.c 2025-10-13 18:34:11.255204095 +0200
@@ -23,12 +23,20 @@
static void storeatubox (lua_State* L, int lo)
{
#ifdef LUA_VERSION_NUM
+#if LUA_VERSION_NUM > 501
+ lua_getuservalue(L, lo);
+#else
lua_getfenv(L, lo);
+#endif
if (lua_rawequal(L, -1, TOLUA_NOPEER)) {
lua_pop(L, 1);
lua_newtable(L);
lua_pushvalue(L, -1);
+#if LUA_VERSION_NUM > 501
+ lua_setuservalue(L, lo); /* stack: k,v,table */
+#else
lua_setfenv(L, lo); /* stack: k,v,table */
+#endif
};
lua_insert(L, -3);
lua_settable(L, -3); /* on lua 5.1, we trade the "tolua_peers" lookup for a settable call */
@@ -141,7 +149,11 @@
{
/* Access alternative table */
#ifdef LUA_VERSION_NUM /* new macro on version 5.1 */
+#if LUA_VERSION_NUM > 501
+ lua_getuservalue(L, 1);
+#else
lua_getfenv(L,1);
+#endif
if (!lua_rawequal(L, -1, TOLUA_NOPEER)) {
lua_pushvalue(L, 2); /* key */
lua_gettable(L, -2); /* on lua 5.1, we trade the "tolua_peers" lookup for a gettable call */
@@ -420,6 +432,8 @@
*/
TOLUA_API int class_gc_event (lua_State* L)
{
+ if (lua_type(L,1) == LUA_TUSERDATA)
+ {
void* u = *((void**)lua_touserdata(L,1));
int top;
/*fprintf(stderr, "collecting: looking at %p\n", u);*/
@@ -427,7 +441,8 @@
lua_pushstring(L,"tolua_gc");
lua_rawget(L,LUA_REGISTRYINDEX);
*/
- lua_pushvalue(L, lua_upvalueindex(1));
+ lua_pushstring(L,"tolua_gc");
+ lua_rawget(L,LUA_REGISTRYINDEX); /* gc */
lua_pushlightuserdata(L,u);
lua_rawget(L,-2); /* stack: gc umt */
lua_getmetatable(L,1); /* stack: gc umt mt */
@@ -456,6 +471,7 @@
lua_rawset(L,-5); /* stack: gc umt mt */
}
lua_pop(L,3);
+ }
return 0;
}
Index: toluapp-1.0.93/src/lib/tolua_is.c
===================================================================
--- toluapp-1.0.93.orig/src/lib/tolua_is.c 2012-08-24 03:01:53.000000000 +0200
+++ toluapp-1.0.93/src/lib/tolua_is.c 2025-10-13 18:34:11.255501901 +0200
@@ -116,7 +116,7 @@
}
/* the equivalent of lua_is* for usertable */
-static int lua_isusertable (lua_State* L, int lo, const const char* type)
+static int lua_isusertable (lua_State* L, int lo, const char* type)
{
int r = 0;
if (lo < 0) lo = lua_gettop(L)+lo+1;
Index: toluapp-1.0.93/src/lib/tolua_map.c
===================================================================
--- toluapp-1.0.93.orig/src/lib/tolua_map.c 2012-08-24 03:01:53.000000000 +0200
+++ toluapp-1.0.93/src/lib/tolua_map.c 2025-10-13 18:34:11.255740969 +0200
@@ -25,7 +25,7 @@
/* Create metatable
* Create and register new metatable
*/
-static int tolua_newmetatable (lua_State* L, char* name)
+static int tolua_newmetatable (lua_State* L, const char* name)
{
int r = luaL_newmetatable(L,name);
@@ -262,8 +262,12 @@
lua_pop(L, 1);
lua_pushvalue(L, TOLUA_NOPEER);
- };
+ }
+#if LUA_VERSION_NUM > 501
+ lua_setuservalue(L, -2);
+#else
lua_setfenv(L, -2);
+#endif
return 0;
};
@@ -271,7 +275,11 @@
static int tolua_bnd_getpeer(lua_State* L) {
/* stack: userdata */
+#if LUA_VERSION_NUM > 501
+ lua_getuservalue(L, -1);
+#else
lua_getfenv(L, -1);
+#endif
if (lua_rawequal(L, -1, TOLUA_NOPEER)) {
lua_pop(L, 1);
lua_pushnil(L);
@@ -291,15 +299,6 @@
{
lua_pushstring(L,"tolua_opened"); lua_pushboolean(L,1); lua_rawset(L,LUA_REGISTRYINDEX);
- #ifndef LUA_VERSION_NUM /* only prior to lua 5.1 */
- /* create peer object table */
- lua_pushstring(L, "tolua_peers"); lua_newtable(L);
- /* make weak key metatable for peers indexed by userdata object */
- lua_newtable(L); lua_pushliteral(L, "__mode"); lua_pushliteral(L, "k"); lua_rawset(L, -3); /* stack: string peers mt */
- lua_setmetatable(L, -2); /* stack: string peers */
- lua_rawset(L,LUA_REGISTRYINDEX);
- #endif
-
/* create object ptr -> udata mapping table */
lua_pushstring(L,"tolua_ubox"); lua_newtable(L);
/* make weak value metatable for ubox table to allow userdata to be
@@ -331,10 +330,8 @@
tolua_function(L,"releaseownership",tolua_bnd_releaseownership);
tolua_function(L,"cast",tolua_bnd_cast);
tolua_function(L,"inherit", tolua_bnd_inherit);
- #ifdef LUA_VERSION_NUM /* lua 5.1 */
tolua_function(L, "setpeer", tolua_bnd_setpeer);
tolua_function(L, "getpeer", tolua_bnd_getpeer);
- #endif
tolua_endmodule(L);
tolua_endmodule(L);
@@ -411,7 +408,11 @@
lua_rawget(L,-2);
}
else
+#if LUA_VERSION_NUM > 501
+ lua_pushglobaltable(L);
+#else
lua_pushvalue(L,LUA_GLOBALSINDEX);
+#endif
}
/* End module
@@ -445,7 +446,11 @@
else
{
/* global table */
+#if LUA_VERSION_NUM > 501
+ lua_pushglobaltable(L);
+#else
lua_pushvalue(L,LUA_GLOBALSINDEX);
+#endif
}
if (hasvar)
{
@@ -473,7 +478,11 @@
else
{
/* global table */
+#if LUA_VERSION_NUM > 501
+ lua_pushglobaltable(L);
+#else
lua_pushvalue(L,LUA_GLOBALSINDEX);
+#endif
}
if (hasvar)
{
Index: toluapp-1.0.93/src/lib/tolua_push.c
===================================================================
--- toluapp-1.0.93.orig/src/lib/tolua_push.c 2012-08-24 03:01:53.000000000 +0200
+++ toluapp-1.0.93/src/lib/tolua_push.c 2025-10-13 18:34:11.255991352 +0200
@@ -77,10 +77,12 @@
lua_pushvalue(L, -2); /* stack: mt newud mt */
lua_setmetatable(L,-2); /* stack: mt newud */
- #ifdef LUA_VERSION_NUM
lua_pushvalue(L, TOLUA_NOPEER);
+#if LUA_VERSION_NUM > 501
+ lua_setuservalue(L, -2);
+#else
lua_setfenv(L, -2);
- #endif
+#endif
}
else
{