From 4a180e68ba86ae1b2774879a95e89a236cd87e50 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 22 Mar 2017 16:59:02 +0100 Subject: Special case const std::string& Lua binding. since 6dc3bdf, a const string reference would leave scope with Lua code fn("text") calling a C++ fn (const std::string&) before the C++ function is called. --- libs/lua/LuaBridge/detail/Stack.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'libs') diff --git a/libs/lua/LuaBridge/detail/Stack.h b/libs/lua/LuaBridge/detail/Stack.h index e6ff637f19..7311c921f9 100644 --- a/libs/lua/LuaBridge/detail/Stack.h +++ b/libs/lua/LuaBridge/detail/Stack.h @@ -731,14 +731,15 @@ struct Stack { static inline void push (lua_State* L, std::string const& str) { - lua_pushstring (L, str.c_str()); + lua_pushlstring (L, str.c_str (), str.size()); } - static inline std::string get (lua_State* L, int index) + static inline std::string& get (lua_State* L, int index) { size_t len; const char *str = luaL_checklstring(L, index, &len); - return std::string (str, len); + std::string* x = new (lua_newuserdata (L, sizeof (std::string))) std::string (str, len); + return *x; } }; -- cgit v1.2.3