From b021e7b5afcbe4d43e7e9f242bbd3272e478f643 Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Fri, 6 Jun 2014 15:51:53 +0300 Subject: [PATCH] read_lua_fragment: Don't duplicate the script infinite number of times --- include/lua/lua.hpp | 2 +- src/lua/lua.cpp | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/lua/lua.hpp b/include/lua/lua.hpp index 96021f1e..674dbf94 100644 --- a/include/lua/lua.hpp +++ b/include/lua/lua.hpp @@ -109,7 +109,7 @@ private: lua::state& L; command::group& command; bool recursive_flag; - char* luareader_fragment; + const char* luareader_fragment; }; #endif diff --git a/src/lua/lua.cpp b/src/lua/lua.cpp index 829045f4..e1844fb7 100644 --- a/src/lua/lua.cpp +++ b/src/lua/lua.cpp @@ -99,7 +99,7 @@ namespace const char* read_lua_fragment(lua_State* L, void* fragment, size_t* size) { - const char* luareader_fragment = reinterpret_cast(fragment); + const char*& luareader_fragment = *reinterpret_cast(fragment); if(luareader_fragment) { const char* ret = luareader_fragment; *size = strlen(luareader_fragment); @@ -506,10 +506,10 @@ void lua_state::run_lua_fragment() throw(std::bad_alloc) if(recursive_flag) return; #if LUA_VERSION_NUM == 501 - int t = L.load(read_lua_fragment, luareader_fragment, "run_lua_fragment"); + int t = L.load(read_lua_fragment, &luareader_fragment, "run_lua_fragment"); #endif #if LUA_VERSION_NUM == 502 - int t = L.load(read_lua_fragment, luareader_fragment, "run_lua_fragment", "t"); + int t = L.load(read_lua_fragment, &luareader_fragment, "run_lua_fragment", "t"); #endif if(t == LUA_ERRSYNTAX) { messages << "Can't run Lua: Internal syntax error: " << L.tostring(-1) @@ -548,7 +548,7 @@ void lua_state::do_eval_lua(const std::string& c) throw(std::bad_alloc) { L.pushlstring(c.c_str(), c.length()); L.setglobal(TEMPORARY); - luareader_fragment = const_cast(eval_lua_lua); + luareader_fragment = eval_lua_lua; run_lua_fragment(); } @@ -556,7 +556,7 @@ void lua_state::do_run_lua(const std::string& c) throw(std::bad_alloc) { L.pushlstring(c.c_str(), c.length()); L.setglobal(TEMPORARY); - luareader_fragment = const_cast(run_lua_lua); + luareader_fragment = run_lua_lua; run_lua_fragment(); } @@ -586,7 +586,7 @@ void lua_state::run_sysrc_lua() { L.pushstring(lua_sysrc_script); L.setglobal(TEMPORARY); - luareader_fragment = const_cast(eval_sysrc_lua); + luareader_fragment = eval_sysrc_lua; run_lua_fragment(); } -- 2.11.4.GIT