diff --git a/Assets/XLua/Src/LuaDLL.cs b/Assets/XLua/Src/LuaDLL.cs index 6bf16d721..81581a3ad 100644 --- a/Assets/XLua/Src/LuaDLL.cs +++ b/Assets/XLua/Src/LuaDLL.cs @@ -301,16 +301,14 @@ public static void lua_pushstring(IntPtr L, string str) //业务使用 else { #if !THREAD_SAFE && !HOTFIX_ENABLE - if (Encoding.UTF8.GetByteCount(str) > InternalGlobals.strBuff.Length) - { - byte[] bytes = Encoding.UTF8.GetBytes(str); - xlua_pushlstring(L, bytes, bytes.Length); - } - else + int str_len = str.Length; + if (InternalGlobals.strBuff.Length < str_len) { - int bytes_len = Encoding.UTF8.GetBytes(str, 0, str.Length, InternalGlobals.strBuff, 0); - xlua_pushlstring(L, InternalGlobals.strBuff, bytes_len); + InternalGlobals.strBuff = new byte[str_len]; } + + int bytes_len = Encoding.UTF8.GetBytes(str, 0, str_len, InternalGlobals.strBuff, 0); + xlua_pushlstring(L, InternalGlobals.strBuff, bytes_len); #else var bytes = Encoding.UTF8.GetBytes(str); xlua_pushlstring(L, bytes, bytes.Length);