Parcourir la source

Fix string indexOf for empty string (#1414)

fixes https://github.com/sebastienros/jint/issues/1413
Marko Lahma il y a 2 ans
Parent
commit
ca32bc18ff
2 fichiers modifiés avec 10 ajouts et 2 suppressions
  1. 8 0
      Jint.Tests/Runtime/StringTests.cs
  2. 2 2
      Jint/Native/String/StringPrototype.cs

+ 8 - 0
Jint.Tests/Runtime/StringTests.cs

@@ -55,4 +55,12 @@ bar += 'bar';
         Assert.True(engine.Evaluate("!iterator.hasOwnProperty(Symbol.iterator)").AsBoolean());
         Assert.True(engine.Evaluate("iterator[Symbol.iterator]() === iterator").AsBoolean());
     }
+
+    [Fact]
+    public void IndexOf()
+    {
+        var engine = new Engine();
+        Assert.Equal(0, engine.Evaluate("''.indexOf('', 0)"));
+        Assert.Equal(0, engine.Evaluate("''.indexOf('', 1)"));
+    }
 }

+ 2 - 2
Jint/Native/String/StringPrototype.cs

@@ -799,9 +799,9 @@ namespace Jint.Native.String
                 pos = TypeConverter.ToInteger(arguments[1]);
             }
 
-            if (pos >= s.Length)
+            if (pos > s.Length)
             {
-                return JsNumber.IntegerNegativeOne;
+                pos = s.Length;
             }
 
             if (pos < 0)