From a5bc48afeac0b33631b7aeb544e6a23d99b54bf8 Mon Sep 17 00:00:00 2001 From: Olly Betts Date: Wed, 19 Oct 2022 07:29:06 +1300 Subject: [PATCH] [Lua] Fix type resolution between SWIG-wrapped modules See #2126 --- CHANGES.current | 4 ++++ Examples/test-suite/lua/mod_runme.lua | 12 ++++++++++++ Lib/lua/luarun.swg | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 Examples/test-suite/lua/mod_runme.lua diff --git a/CHANGES.current b/CHANGES.current index 0a23158a2..ffebbac46 100644 --- a/CHANGES.current +++ b/CHANGES.current @@ -7,6 +7,10 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ Version 4.1.0 (in progress) =========================== +2022-10-19: olly + [Lua] #2126 Fix type resolution between multiple SWIG-wrapped + modules. + 2022-10-17: wsfulton [R] #2385 Add support for std::vector>. diff --git a/Examples/test-suite/lua/mod_runme.lua b/Examples/test-suite/lua/mod_runme.lua new file mode 100644 index 000000000..444a61b20 --- /dev/null +++ b/Examples/test-suite/lua/mod_runme.lua @@ -0,0 +1,12 @@ +require("import") -- the import fn +import("mod_a") -- import lib +import("mod_b") -- import lib + +-- catch "undefined" global variables +local env = _ENV -- Lua 5.2 +if not env then env = getfenv () end -- Lua 5.1 +setmetatable(env, {__index=function (t,i) error("undefined global variable `"..i.."'",2) end}) + +c = mod_b.C() +d = mod_b.D() +d:DoSomething(c) diff --git a/Lib/lua/luarun.swg b/Lib/lua/luarun.swg index 909a5229c..f47fd4fac 100644 --- a/Lib/lua/luarun.swg +++ b/Lib/lua/luarun.swg @@ -1789,7 +1789,7 @@ SWIGRUNTIME int SWIG_Lua_ConvertPtr(lua_State *L,int index,void **ptr,swig_type } else { - cast=SWIG_TypeCheckStruct(usr->type,type); /* performs normal type checking */ + cast=SWIG_TypeCheck(usr->type->name,type); /* performs normal type checking */ if (cast) { int newmemory = 0;