Lua/LuaInstance: Fix movement, for real

This commit is contained in:
Lynix 2017-12-16 21:21:35 +01:00
parent f5df0eb056
commit ec22b8d643
1 changed files with 22 additions and 13 deletions

View File

@ -39,14 +39,19 @@ namespace Nz
}
LuaInstance::LuaInstance(LuaInstance&& instance) :
LuaState(std::move(instance)),
m_memoryLimit(std::move(m_memoryLimit)),
m_memoryUsage(std::move(m_memoryUsage)),
m_timeLimit(std::move(m_timeLimit)),
m_clock(std::move(m_clock)),
m_level(std::move(m_level))
LuaState(std::move(instance))
{
std::swap(m_memoryLimit, instance.m_memoryLimit);
std::swap(m_memoryUsage, instance.m_memoryUsage);
std::swap(m_timeLimit, instance.m_timeLimit);
std::swap(m_clock, instance.m_clock);
std::swap(m_level, instance.m_level);
if (m_state)
lua_setallocf(m_state, MemoryAllocator, this);
if (instance.m_state)
lua_setallocf(instance.m_state, MemoryAllocator, &instance);
}
LuaInstance::~LuaInstance()
@ -59,14 +64,18 @@ namespace Nz
{
LuaState::operator=(std::move(instance));
m_memoryLimit = std::move(instance.m_memoryLimit);
m_memoryUsage = std::move(instance.m_memoryUsage);
m_timeLimit = std::move(instance.m_timeLimit);
m_clock = std::move(instance.m_clock);
m_level = std::move(instance.m_level);
std::swap(m_memoryLimit, instance.m_memoryLimit);
std::swap(m_memoryUsage, instance.m_memoryUsage);
std::swap(m_timeLimit, instance.m_timeLimit);
std::swap(m_clock, instance.m_clock);
std::swap(m_level, instance.m_level);
if (m_state)
lua_setallocf(m_state, MemoryAllocator, this);
if (instance.m_state)
lua_setallocf(instance.m_state, MemoryAllocator, &instance);
return *this;
}