From c8aea48d84a1da84759a6a15b95212ca43082581 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Sat, 31 May 2025 06:33:11 +1000 Subject: fix Lua strings inside JSON always being null-terminated --- source/core/StarLua.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'source/core/StarLua.cpp') diff --git a/source/core/StarLua.cpp b/source/core/StarLua.cpp index b70fe59..bd27129 100644 --- a/source/core/StarLua.cpp +++ b/source/core/StarLua.cpp @@ -159,7 +159,7 @@ Maybe LuaConverter::to(LuaEngine&, LuaValue const& v) { return Json(*f); if (auto s = v.ptr()) - return Json(s->ptr()); + return Json(s->toString()); if (v.is()) return LuaDetail::tableToJsonContainer(v.get()); @@ -474,16 +474,20 @@ lua_Debug const& LuaEngine::debugInfo(int level, const char* what) { return debug; } -LuaString LuaEngine::createString(String const& str) { +LuaString LuaEngine::createString(std::string const& str) { lua_checkstack(m_state, 1); if (m_nullTerminated > 0) - lua_pushstring(m_state, str.utf8Ptr()); + lua_pushstring(m_state, str.data()); else - lua_pushlstring(m_state, str.utf8Ptr(), str.utf8Size()); + lua_pushlstring(m_state, str.data(), str.size()); return LuaString(LuaDetail::LuaHandle(RefPtr(this), popHandle(m_state))); } +LuaString LuaEngine::createString(String const& str) { + return createString(str.utf8()); +} + LuaString LuaEngine::createString(char const* str) { lua_checkstack(m_state, 1); -- cgit v1.2.3