From 69ed4d5884d3308f56ebbde8b43cd70ecf5c235a Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Mon, 8 Jun 2020 13:01:45 -0300 Subject: [PATCH] Makes Lua::run const --- src/engine/lua.cc | 8 +++++--- src/engine/lua.h | 10 +++++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/engine/lua.cc b/src/engine/lua.cc index b58b28a2..86da6fd1 100644 --- a/src/engine/lua.cc +++ b/src/engine/lua.cc @@ -121,7 +121,7 @@ const char *Lua::blob_reader(lua_State *L, void *ud, size_t *size) { #endif -int Lua::run(Transaction *t, const std::string &str) { +int Lua::run(Transaction *t, const std::string &str) const { #ifdef WITH_LUA std::string luaRet; const char *a = NULL; @@ -138,10 +138,12 @@ int Lua::run(Transaction *t, const std::string &str) { luaL_setfuncs(L, mscLuaLib, 0); lua_setglobal(L, "m"); + LuaScriptBlob blob(m_blob); + #ifdef WITH_LUA_5_1 - int rc = lua_load(L, Lua::blob_reader, &m_blob, m_scriptName.c_str()); + int rc = lua_load(L, Lua::blob_reader, &blob, m_scriptName.c_str()); #else - int rc = lua_load(L, Lua::blob_reader, &m_blob, m_scriptName.c_str(), + int rc = lua_load(L, Lua::blob_reader, &blob, m_scriptName.c_str(), NULL); #endif if (rc != LUA_OK) { diff --git a/src/engine/lua.h b/src/engine/lua.h index 02882e84..ebc51c11 100644 --- a/src/engine/lua.h +++ b/src/engine/lua.h @@ -43,6 +43,14 @@ class LuaScriptBlob { } } + LuaScriptBlob(const LuaScriptBlob &other) : + m_data(NULL), + m_len(other.m_len) { + m_data = (unsigned char *)std::malloc(m_len); + // FIXME: m_data NULL? + std::memcpy(m_data, other.m_data, m_len); + } + void write(const void *data, size_t len) { unsigned char *d = (unsigned char *)realloc((unsigned char *)m_data, len + m_len); @@ -68,7 +76,7 @@ class Lua { Lua() { } bool load(const std::string &script, std::string *err); - int run(Transaction *t, const std::string &str=""); + int run(Transaction *t, const std::string &str="") const; static bool isCompatible(const std::string &script, Lua *l, std::string *error); #ifdef WITH_LUA