Bladeren bron

[lua] fix issue with lastIndexOf on empty strings #7609

Justin Donaldson 5 jaren geleden
bovenliggende
commit
515b552755
2 gewijzigde bestanden met toevoegingen van 2 en 5 verwijderingen
  1. 2 3
      std/lua/_std/String.hx
  2. 0 2
      tests/unit/src/unitstd/String.unit.hx

+ 2 - 3
std/lua/_std/String.hx

@@ -69,7 +69,7 @@ class String {
 			startIndex += 1;
 		if (str == "") {
 			// TODO: this makes lua CI hang forever
-			// return indexOfEmpty(this, startIndex - 1);
+			return indexOfEmpty(this, startIndex - 1);
 		}
 		var r = BaseString.find(this, str, startIndex, true).begin;
 		if (r != null && r > 0)
@@ -88,13 +88,12 @@ class String {
 	}
 
 	public inline function lastIndexOf(str:String, ?startIndex:Int):Int {
-		var i = 0;
 		var ret = -1;
 		if (startIndex == null)
 			startIndex = length;
 		while (true) {
 			var p = indexOf(str, ret + 1);
-			if (p == -1 || p > startIndex)
+			if (p == -1 || p > startIndex || p == ret)
 				break;
 			ret = p;
 		}

+ 0 - 2
tests/unit/src/unitstd/String.unit.hx

@@ -71,9 +71,7 @@ s.indexOf("oo") == 1;
 //s.indexOf("r", -1) == -1;
 //s.indexOf("r", -10) == -1;
 s.indexOf("", 2) == 2;
-#if !lua //See https://github.com/HaxeFoundation/haxe/issues/7609
 s.indexOf("", 200) == s.length;
-#end
 s.indexOf("o", 1) == 1;
 s.indexOf("o", 2) == 2;
 s.indexOf("o", 3) == -1;