Browse Source

fix: string.gsub didn't return replace count

Akeit0 7 months ago
parent
commit
70a9e17a05
1 changed files with 3 additions and 3 deletions
  1. 3 3
      src/Lua/Standard/StringLibrary.cs

+ 3 - 3
src/Lua/Standard/StringLibrary.cs

@@ -481,8 +481,8 @@ public sealed class StringLibrary
         var builder = new StringBuilder();
         var builder = new StringBuilder();
         var lastIndex = 0;
         var lastIndex = 0;
         var replaceCount = 0;
         var replaceCount = 0;
-
-        for (int i = 0; i < matches.Count; i++)
+        int i = 0;
+        for (; i < matches.Count; i++)
         {
         {
             if (replaceCount > n) break;
             if (replaceCount > n) break;
 
 
@@ -547,7 +547,7 @@ public sealed class StringLibrary
 
 
         builder.Append(s.AsSpan()[lastIndex..s.Length]);
         builder.Append(s.AsSpan()[lastIndex..s.Length]);
 
 
-        return context.Return(builder.ToString());
+        return context.Return(builder.ToString(), i);
     }
     }
 
 
     public ValueTask<int> Len(LuaFunctionExecutionContext context, CancellationToken cancellationToken)
     public ValueTask<int> Len(LuaFunctionExecutionContext context, CancellationToken cancellationToken)