Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion build/lua.m4
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ dnl LUA_DISPLAY
dnl LUA_FOUND

AC_DEFUN([CHECK_LUA], [
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])
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])

# Post-processing: detect Lua version and add version-specific defines
if test "x${LUA_FOUND}" = "x1"; then
Expand All @@ -19,6 +19,7 @@ if test "x${LUA_FOUND}" = "x1"; then
5.2*) LUA_CFLAGS="-DWITH_LUA_5_2 ${LUA_CFLAGS}" ;;
5.3*) LUA_CFLAGS="-DWITH_LUA_5_3 ${LUA_CFLAGS}" ;;
5.4*) LUA_CFLAGS="-DWITH_LUA_5_4 ${LUA_CFLAGS}" ;;
5.5*) LUA_CFLAGS="-DWITH_LUA_5_5 ${LUA_CFLAGS}" ;;
2.0*) LUA_CFLAGS="-DWITH_LUA_5_1 ${LUA_CFLAGS}" ;;
2.1*) LUA_CFLAGS="-DWITH_LUA_5_1 -DWITH_LUA_JIT_2_1 ${LUA_CFLAGS}" ;;
esac
Expand All @@ -31,6 +32,14 @@ if test "x${LUA_FOUND}" = "x1"; then
_msc_save_CFLAGS=$CFLAGS
CFLAGS="${LUA_CFLAGS} ${CFLAGS}"

AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <lua.h> ]],
[[ #if (LUA_VERSION_NUM == 505)
return 0;
#else
#error not 5.5
#endif ]])],
[ _msc_lua_ver=505 ], [ _msc_lua_ver="" ])

AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <lua.h> ]],
[[ #if (LUA_VERSION_NUM == 504)
return 0;
Expand Down Expand Up @@ -76,6 +85,7 @@ if test "x${LUA_FOUND}" = "x1"; then
502) LUA_CFLAGS="-DWITH_LUA_5_2 ${LUA_CFLAGS}" ;;
503) LUA_CFLAGS="-DWITH_LUA_5_3 ${LUA_CFLAGS}" ;;
504) LUA_CFLAGS="-DWITH_LUA_5_4 ${LUA_CFLAGS}" ;;
505) LUA_CFLAGS="-DWITH_LUA_5_5 ${LUA_CFLAGS}" ;;
esac
if test -n "$_msc_lua_ver"; then
AC_MSG_NOTICE([LUA version from compile test: $_msc_lua_ver])
Expand Down
2 changes: 1 addition & 1 deletion src/engine/lua.cc
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ int Lua::run(Transaction *t, const std::string &str) { // cppcheck-suppress cons
case LUA_ERRMEM:
e.assign("Memory error. ");
break;
#if !defined(WITH_LUA_5_1) and !defined(WITH_LUA_5_4)
#if !defined(WITH_LUA_5_1) and !defined(WITH_LUA_5_4) and !defined(WITH_LUA_5_5)
case LUA_ERRGCMM:
e.assign("Garbage Collector error. ");
break;
Expand Down
10 changes: 8 additions & 2 deletions test/test-cases/data/match-getvars.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,14 @@ function dump(o)
if type(o) == 'table' then
local s = '{ '
for k,v in pairs(o) do
if type(k) ~= 'number' then k = '"'..k..'"' end
s = s .. '['..k..'] = ' .. dump(v) .. ','
-- In Lua 5.5, generic-for loop variables (k and v) are read-only,
-- so we copy k into a local before formatting. This works in earlier
-- Lua versions too.
local key_str = k
if type(key_str) ~= 'number' then
key_str = '"'..key_str..'"'
end
s = s .. '['..key_str..'] = ' .. dump(v) .. ','
end
return s .. '} '
else
Expand Down
Loading