Browse Source

fix: string.find empty pattern

Akeit0 7 months ago
parent
commit
c5d3f9f75c
2 changed files with 4 additions and 4 deletions
  1. 2 4
      src/Lua/Standard/StringLibrary.cs
  2. 2 0
      tests/Lua.Tests/LuaTests.cs

+ 2 - 4
src/Lua/Standard/StringLibrary.cs

@@ -86,9 +86,7 @@ public sealed class StringLibrary
         var init = context.HasArgument(2)
             ? context.GetArgument<double>(2)
             : 1;
-        var plain = context.HasArgument(3)
-            ? context.GetArgument(3).ToBoolean()
-            : false;
+        var plain = context.HasArgument(3) && context.GetArgument(3).ToBoolean();
 
         LuaRuntimeException.ThrowBadArgumentIfNumberIsNotInteger(context.State, "find", 3, init);
 
@@ -107,7 +105,7 @@ public sealed class StringLibrary
         // empty pattern
         if (pattern.Length == 0)
         {
-            return new(context.Return(1, 1));
+            return new(context.Return(1, 0));
         }
 
         var source = s.AsSpan()[(int)(init - 1)..];

+ 2 - 0
tests/Lua.Tests/LuaTests.cs

@@ -19,6 +19,8 @@ public class LuaTests
     [TestCase("tests-lua/code.lua")]
     [TestCase("tests-lua/goto.lua")]
     [TestCase("tests-lua/constructs.lua")]
+    [TestCase("tests-lua/locals.lua")]
+    //[TestCase("tests-lua/pm.lua")] string.match is not implemented
     //[TestCase("tests-lua/sort.lua")] //check for "invalid order function" is not implemented
     //[TestCase("tests-lua/calls.lua")] //  string.dump and reader function for load chunk is not implemented
     [TestCase("tests-lua/closure.lua")]