Merge branch 'ryannevell-master'

* ryannevell-master:
  Clean up test cases
  Fix unwrapping of LUA lightuserdata type. Add test case.
This commit is contained in:
William S Fulton 2020-02-18 22:07:05 +00:00
commit aad43031a4
4 changed files with 30 additions and 0 deletions

View file

@ -15,6 +15,7 @@ top_builddir = @top_builddir@
CPP_TEST_CASES += \
lua_no_module_global \
lua_inherit_getitem \
lua_lightuserdata \
C_TEST_CASES += \

View file

@ -0,0 +1,7 @@
require("import") -- the import fn
import("lua_lightuserdata") -- import lib
local t = lua_lightuserdata
local d = t.get_lightuserdata()
local r = t.check_lighuserdata(d)
assert(r)

View file

@ -0,0 +1,17 @@
%module lua_lightuserdata
%native(get_lightuserdata) int get_lightuserdata(lua_State* L);
%{
static int foo;
int get_lightuserdata(lua_State* L)
{
lua_pushlightuserdata(L, &foo);
return 1;
}
%}
%inline %{
bool check_lighuserdata(const void* d) {
return d == &foo;
}
%}

View file

@ -1765,6 +1765,11 @@ SWIGRUNTIME int SWIG_Lua_ConvertPtr(lua_State *L,int index,void **ptr,swig_type
*ptr=0;
return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK;
}
if (lua_islightuserdata(L,index))
{
*ptr=lua_touserdata(L,index);
return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK;
}
usr=(swig_lua_userdata*)lua_touserdata(L,index); /* get data */
if (usr)
{