From 3691c18668683a90c88681cc39079eb3d5b2e098 Mon Sep 17 00:00:00 2001 From: "CodeSmile-PC\\CodeSmile" <42713966+CodeSmile-0000011110110111@users.noreply.github.com> Date: Wed, 9 Apr 2025 12:16:34 +0200 Subject: [PATCH 1/4] fix string.format not being culture invariant (https://github.com/nuskey8/Lua-CSharp/issues/116) --- src/Lua/Standard/StringLibrary.cs | 9 ++++++++- tests/Lua.Tests/tests-lua/strings.lua | 3 +-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Lua/Standard/StringLibrary.cs b/src/Lua/Standard/StringLibrary.cs index 9eeb1bb1..a33f03db 100644 --- a/src/Lua/Standard/StringLibrary.cs +++ b/src/Lua/Standard/StringLibrary.cs @@ -1,5 +1,6 @@ using System.Text; using Lua.Internal; +using System.Globalization; namespace Lua.Standard; @@ -148,6 +149,9 @@ public ValueTask Find(LuaFunctionExecutionContext context, Memory public async ValueTask Format(LuaFunctionExecutionContext context, Memory buffer, CancellationToken cancellationToken) { + var currentCulture = CultureInfo.CurrentCulture; + CultureInfo.CurrentCulture = CultureInfo.InvariantCulture; + var format = context.GetArgument(0); // TODO: pooling StringBuilder @@ -419,6 +423,9 @@ public async ValueTask Format(LuaFunctionExecutionContext context, Memory Upper(LuaFunctionExecutionContext context, Memory Date: Wed, 9 Apr 2025 12:17:30 +0200 Subject: [PATCH 2/4] ignore Rider's .idea folder --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 496ee2ca..af56f610 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.DS_Store \ No newline at end of file +.DS_Store +.idea/ From 4bec342b49042e4181d62188368ce075897a83d3 Mon Sep 17 00:00:00 2001 From: "CodeSmile-PC\\CodeSmile" <42713966+CodeSmile-0000011110110111@users.noreply.github.com> Date: Fri, 11 Apr 2025 11:30:47 +0200 Subject: [PATCH 3/4] safeguard traceback against indexoutofrange --- src/Lua/Runtime/Tracebacks.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Lua/Runtime/Tracebacks.cs b/src/Lua/Runtime/Tracebacks.cs index 2a97ea19..20732b8b 100644 --- a/src/Lua/Runtime/Tracebacks.cs +++ b/src/Lua/Runtime/Tracebacks.cs @@ -24,7 +24,8 @@ internal SourcePosition LastPosition if (lastFunc is Closure closure) { var p = closure.Proto; - return p.SourcePositions[frame.CallerInstructionIndex]; + if (frame.CallerInstructionIndex < p.SourcePositions.Length) + return p.SourcePositions[frame.CallerInstructionIndex]; } } @@ -66,4 +67,4 @@ public override string ToString() return list.AsSpan().ToString(); } -} \ No newline at end of file +} From 6c0fbb8d7c830eb20f187f683611d948b374fe57 Mon Sep 17 00:00:00 2001 From: "CodeSmile-PC\\CodeSmile" <42713966+CodeSmile-0000011110110111@users.noreply.github.com> Date: Fri, 11 Apr 2025 18:39:06 +0200 Subject: [PATCH 4/4] add LuaFunction name setter - this may help debugging --- src/Lua/LuaFunction.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Lua/LuaFunction.cs b/src/Lua/LuaFunction.cs index 2c1fae5a..6ebaf5db 100644 --- a/src/Lua/LuaFunction.cs +++ b/src/Lua/LuaFunction.cs @@ -5,7 +5,7 @@ namespace Lua; public class LuaFunction(string name, Func, CancellationToken, ValueTask> func) { - public string Name { get; } = name; + public string Name { get; set; } = name; internal Func, CancellationToken, ValueTask> Func { get; } = func; public LuaFunction(Func, CancellationToken, ValueTask> func) : this("anonymous", func) @@ -31,4 +31,4 @@ public async ValueTask InvokeAsync(LuaFunctionExecutionContext context, Mem context.Thread.PopCallStackFrame(); } } -} \ No newline at end of file +}