diff options
author | Olly Betts <olly@survex.com> | 2022-10-19 07:29:06 +1300 |
---|---|---|
committer | Olly Betts <ojwbetts@gmail.com> | 2022-10-20 10:14:59 +1300 |
commit | a5bc48afeac0b33631b7aeb544e6a23d99b54bf8 (patch) | |
tree | f0e9212ac8d5830622d24a5376cf722e2d1d8a6e | |
parent | 867e49d7c50aded9afdd36223f05b84645636f15 (diff) | |
download | swig-a5bc48afeac0b33631b7aeb544e6a23d99b54bf8.tar.gz |
[Lua] Fix type resolution between SWIG-wrapped modules
See #2126
-rw-r--r-- | CHANGES.current | 4 | ||||
-rw-r--r-- | Examples/test-suite/lua/mod_runme.lua | 12 | ||||
-rw-r--r-- | Lib/lua/luarun.swg | 2 |
3 files changed, 17 insertions, 1 deletions
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<std::vector<std::string>>. 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; |