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/ 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 +} 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 +} 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