diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/core/StarLua.cpp | 4 | ||||
-rw-r--r-- | source/core/StarLua.hpp | 1 | ||||
-rw-r--r-- | source/frontend/StarClientCommandProcessor.cpp | 2 | ||||
-rw-r--r-- | source/game/StarInput.cpp | 5 | ||||
-rw-r--r-- | source/game/StarInput.hpp | 1 |
5 files changed, 10 insertions, 3 deletions
diff --git a/source/core/StarLua.cpp b/source/core/StarLua.cpp index 91aebab..201f238 100644 --- a/source/core/StarLua.cpp +++ b/source/core/StarLua.cpp @@ -125,7 +125,9 @@ LuaTable LuaContext::createTable() { LuaNullEnforcer::LuaNullEnforcer(LuaEngine& engine) : m_engine(&engine) { ++m_engine->m_nullTerminated; }; -LuaNullEnforcer::~LuaNullEnforcer() { --m_engine->m_nullTerminated; }; +LuaNullEnforcer::LuaNullEnforcer(LuaNullEnforcer&& other) { m_engine = take(other.m_engine); }; + +LuaNullEnforcer::~LuaNullEnforcer() { if (m_engine) --m_engine->m_nullTerminated; }; LuaValue LuaConverter<Json>::from(LuaEngine& engine, Json const& v) { if (v.isType(Json::Type::Null)) { diff --git a/source/core/StarLua.hpp b/source/core/StarLua.hpp index fa777c2..1f0dc43 100644 --- a/source/core/StarLua.hpp +++ b/source/core/StarLua.hpp @@ -414,6 +414,7 @@ struct LuaNullTermWrapper : T { class LuaNullEnforcer { public: LuaNullEnforcer(LuaEngine& engine); + LuaNullEnforcer(LuaNullEnforcer&&); ~LuaNullEnforcer(); private: LuaEngine* m_engine; diff --git a/source/frontend/StarClientCommandProcessor.cpp b/source/frontend/StarClientCommandProcessor.cpp index d0afb0c..599d506 100644 --- a/source/frontend/StarClientCommandProcessor.cpp +++ b/source/frontend/StarClientCommandProcessor.cpp @@ -78,7 +78,7 @@ String ClientCommandProcessor::previewQuestPane(StringList const& arguments, fun StringList ClientCommandProcessor::handleCommand(String const& commandLine, bool userInput) { Maybe<Input::ClipboardUnlock> unlock; if (userInput) // allow clipboard usage during this code - unlock = Input::singleton().unlockClipboard(); + unlock = std::move(Input::singleton().unlockClipboard()); try { if (!commandLine.beginsWith("/")) throw StarException("ClientCommandProcessor expected command, does not start with '/'"); diff --git a/source/game/StarInput.cpp b/source/game/StarInput.cpp index d47045d..dec6705 100644 --- a/source/game/StarInput.cpp +++ b/source/game/StarInput.cpp @@ -688,7 +688,10 @@ unsigned Input::getTag(String const& tagName) const { Input::ClipboardUnlock::ClipboardUnlock(Input& input) : m_input(&input) { ++m_input->m_clipboardAllowed; }; -Input::ClipboardUnlock::~ClipboardUnlock() { --m_input->m_clipboardAllowed; }; +Input::ClipboardUnlock::ClipboardUnlock(ClipboardUnlock&& other) { m_input = take(other.m_input); }; + +Input::ClipboardUnlock::~ClipboardUnlock() { if (m_input) --m_input->m_clipboardAllowed; }; + Input::ClipboardUnlock Input::unlockClipboard() { return Input::ClipboardUnlock(*this); diff --git a/source/game/StarInput.hpp b/source/game/StarInput.hpp index 1746739..05b20eb 100644 --- a/source/game/StarInput.hpp +++ b/source/game/StarInput.hpp @@ -184,6 +184,7 @@ public: class ClipboardUnlock { public: ClipboardUnlock(Input& input); + ClipboardUnlock(ClipboardUnlock&&); ~ClipboardUnlock(); private: |