diff --git a/LuaInterface/Lua/src/LuaDLL.cpp b/LuaInterface/Lua/src/LuaDLL.cpp index d191a1444a..67ac0c4e21 100644 --- a/LuaInterface/Lua/src/LuaDLL.cpp +++ b/LuaInterface/Lua/src/LuaDLL.cpp @@ -618,6 +618,18 @@ namespace Lua511 static void lua_atunlock(IntPtr luaState, LuaCSFunction^ unlockf); #endif + //zero 22-jul-2017 + static int lua_pushthread(IntPtr luaState) + { + return ::lua_pushthread(((lua_State *)luaState.ToPointer())); + } + + static void lua_xmove(IntPtr from, IntPtr to, int n) + { + ::lua_xmove(((lua_State *)from.ToPointer()), ((lua_State *)to.ToPointer()),n); + } + + static void lua_pushnumber(IntPtr luaState, double number) { ::lua_pushnumber(toState, number); diff --git a/LuaInterface/LuaInterface/Lua.cs b/LuaInterface/LuaInterface/Lua.cs index bf4dc94404..5e9bb9065c 100644 --- a/LuaInterface/LuaInterface/Lua.cs +++ b/LuaInterface/LuaInterface/Lua.cs @@ -68,7 +68,7 @@ namespace NLua "-- Preload the mscorlib assembly \n"+ "luanet.load_assembly(\"mscorlib\") \n"; - /*readonly */ IntPtr luaState; + /*readonly */ public IntPtr luaState; //zero 22-jul-2017 - made public ObjectTranslator translator; LuaCSFunction panicCallback, lockCallback, unlockCallback; diff --git a/LuaInterface/LuaInterface/ObjectTranslator.cs b/LuaInterface/LuaInterface/ObjectTranslator.cs index 5235c1412b..bfe99fc5d8 100644 --- a/LuaInterface/LuaInterface/ObjectTranslator.cs +++ b/LuaInterface/LuaInterface/ObjectTranslator.cs @@ -803,6 +803,13 @@ namespace NLua { ((LuaFunction)o).push(luaState); } + //zero 22-jul-2017 + else if (o is Lua) + { + var lua = o as Lua; + LuaDLL.lua_pushnil(lua.luaState); + LuaDLL.lua_xmove(lua.luaState, luaState, 1); + } else { pushObject(luaState,o,"luaNet_metatable");