diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-05-31 06:33:11 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-05-31 06:33:11 +1000 |
commit | c8aea48d84a1da84759a6a15b95212ca43082581 (patch) | |
tree | 8ad60e10fc5ff24bddf6b7bea7c74caad266c31c /source/core/StarLua.cpp | |
parent | d4f886eed6015fcadc572092c6d5e8680bd11149 (diff) |
fix Lua strings inside JSON always being null-terminated
Diffstat (limited to 'source/core/StarLua.cpp')
-rw-r--r-- | source/core/StarLua.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
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<Json> LuaConverter<Json>::to(LuaEngine&, LuaValue const& v) { return Json(*f); if (auto s = v.ptr<LuaString>()) - return Json(s->ptr()); + return Json(s->toString()); if (v.is<LuaTable>()) return LuaDetail::tableToJsonContainer(v.get<LuaTable>()); @@ -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<LuaEngine>(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); |