瀏覽代碼

[eval] comply with assumed matchSub specification

closes #9333
Simon Krajewski 5 年之前
父節點
當前提交
5be6a36ac6
共有 2 個文件被更改,包括 10 次插入1 次删除
  1. 3 1
      src/macro/eval/evalStdLib.ml
  2. 7 0
      tests/unit/src/unit/issues/Issue9333.hx

+ 3 - 1
src/macro/eval/evalStdLib.ml

@@ -942,7 +942,9 @@ module StdEReg = struct
 		let this = this vthis in
 		let s = decode_string s in
 		let pos = decode_int pos in
-		let len = default_int len (String.length s - pos) in
+		let len_default = String.length s - pos in
+		let len = default_int len len_default in
+		let len = if len < 0 then len_default else len in
 		begin try
 			if pos + len > String.length s then raise Not_found;
 			let str = String.sub s 0 (pos + len) in

+ 7 - 0
tests/unit/src/unit/issues/Issue9333.hx

@@ -0,0 +1,7 @@
+package unit.issues;
+
+class Issue9333 extends unit.Test {
+	function test() {
+		t(new EReg("b", "").matchSub("aba", 0, -1));
+	}
+}