Skip to content

Commit ad8b8a8

Browse files
authored
Merge pull request #3525 from airween/v3/lua55
feat: added Lua5.5 support
2 parents 1c1ccf6 + 659c5c5 commit ad8b8a8

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

build/lua.m4

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ dnl LUA_DISPLAY
77
dnl LUA_FOUND
88

99
AC_DEFUN([CHECK_LUA], [
10-
MSC_CHECK_LIB([LUA], [lua54 lua5.4 lua-5.4 lua53 lua5.3 lua-5.3 lua52 lua5.2 lua-5.2 lua51 lua5.1 lua-5.1 luajit lua], [lua.h], [lua5.4 lua5.3 lua5.2 lua5.1 luajit-5.1 lua], [-DWITH_LUA])
10+
MSC_CHECK_LIB([LUA], [lua55 lua5.5 lua-5.5 lua54 lua5.4 lua-5.4 lua53 lua5.3 lua-5.3 lua52 lua5.2 lua-5.2 lua51 lua5.1 lua-5.1 luajit lua], [lua.h], [lua5.5 lua5.4 lua5.3 lua5.2 lua5.1 luajit-5.1 lua], [-DWITH_LUA])
1111
1212
# Post-processing: detect Lua version and add version-specific defines
1313
if test "x${LUA_FOUND}" = "x1"; then
@@ -19,6 +19,7 @@ if test "x${LUA_FOUND}" = "x1"; then
1919
5.2*) LUA_CFLAGS="-DWITH_LUA_5_2 ${LUA_CFLAGS}" ;;
2020
5.3*) LUA_CFLAGS="-DWITH_LUA_5_3 ${LUA_CFLAGS}" ;;
2121
5.4*) LUA_CFLAGS="-DWITH_LUA_5_4 ${LUA_CFLAGS}" ;;
22+
5.5*) LUA_CFLAGS="-DWITH_LUA_5_5 ${LUA_CFLAGS}" ;;
2223
2.0*) LUA_CFLAGS="-DWITH_LUA_5_1 ${LUA_CFLAGS}" ;;
2324
2.1*) LUA_CFLAGS="-DWITH_LUA_5_1 -DWITH_LUA_JIT_2_1 ${LUA_CFLAGS}" ;;
2425
esac
@@ -31,6 +32,14 @@ if test "x${LUA_FOUND}" = "x1"; then
3132
_msc_save_CFLAGS=$CFLAGS
3233
CFLAGS="${LUA_CFLAGS} ${CFLAGS}"
3334
35+
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <lua.h> ]],
36+
[[ #if (LUA_VERSION_NUM == 505)
37+
return 0;
38+
#else
39+
#error not 5.5
40+
#endif ]])],
41+
[ _msc_lua_ver=505 ], [ _msc_lua_ver="" ])
42+
3443
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <lua.h> ]],
3544
[[ #if (LUA_VERSION_NUM == 504)
3645
return 0;
@@ -76,6 +85,7 @@ if test "x${LUA_FOUND}" = "x1"; then
7685
502) LUA_CFLAGS="-DWITH_LUA_5_2 ${LUA_CFLAGS}" ;;
7786
503) LUA_CFLAGS="-DWITH_LUA_5_3 ${LUA_CFLAGS}" ;;
7887
504) LUA_CFLAGS="-DWITH_LUA_5_4 ${LUA_CFLAGS}" ;;
88+
505) LUA_CFLAGS="-DWITH_LUA_5_5 ${LUA_CFLAGS}" ;;
7989
esac
8090
if test -n "$_msc_lua_ver"; then
8191
AC_MSG_NOTICE([LUA version from compile test: $_msc_lua_ver])

src/engine/lua.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ int Lua::run(Transaction *t, const std::string &str) { // cppcheck-suppress cons
154154
case LUA_ERRMEM:
155155
e.assign("Memory error. ");
156156
break;
157-
#if !defined(WITH_LUA_5_1) and !defined(WITH_LUA_5_4)
157+
#if !defined(WITH_LUA_5_1) and !defined(WITH_LUA_5_4) and !defined(WITH_LUA_5_5)
158158
case LUA_ERRGCMM:
159159
e.assign("Garbage Collector error. ");
160160
break;

test/test-cases/data/match-getvars.lua

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,14 @@ function dump(o)
22
if type(o) == 'table' then
33
local s = '{ '
44
for k,v in pairs(o) do
5-
if type(k) ~= 'number' then k = '"'..k..'"' end
6-
s = s .. '['..k..'] = ' .. dump(v) .. ','
5+
-- In Lua 5.5, generic-for loop variables (k and v) are read-only,
6+
-- so we copy k into a local before formatting. This works in earlier
7+
-- Lua versions too.
8+
local key_str = k
9+
if type(key_str) ~= 'number' then
10+
key_str = '"'..key_str..'"'
11+
end
12+
s = s .. '['..key_str..'] = ' .. dump(v) .. ','
713
end
814
return s .. '} '
915
else

0 commit comments

Comments
 (0)