소스 검색

Fix string indexOf for empty string (#1414)

fixes https://github.com/sebastienros/jint/issues/1413
Marko Lahma 2 년 전
부모
커밋
ca32bc18ff
2개의 변경된 파일10개의 추가작업 그리고 2개의 파일을 삭제
  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)