diff --git a/modules/javafx.web/src/main/native/Source/JavaScriptCore/yarr/YarrJIT.cpp b/modules/javafx.web/src/main/native/Source/JavaScriptCore/yarr/YarrJIT.cpp index 32600c3a5c8..3ab5db9d311 100644 --- a/modules/javafx.web/src/main/native/Source/JavaScriptCore/yarr/YarrJIT.cpp +++ b/modules/javafx.web/src/main/native/Source/JavaScriptCore/yarr/YarrJIT.cpp @@ -2135,7 +2135,7 @@ class YarrGenerator final : public YarrJITInfo, private MacroAssembler { if (!nonGreedyFailuresDecrementIndex.empty()) { nonGreedyFailuresDecrementIndex.link(this); - breakpoint(); + sub32(TrustedImm32(1), index); } nonGreedyFailures.link(this); sub32(countRegister, index); diff --git a/modules/javafx.web/src/test/java/test/javafx/scene/web/LoadTest.java b/modules/javafx.web/src/test/java/test/javafx/scene/web/LoadTest.java index 54efc09fca1..651463bcdab 100644 --- a/modules/javafx.web/src/test/java/test/javafx/scene/web/LoadTest.java +++ b/modules/javafx.web/src/test/java/test/javafx/scene/web/LoadTest.java @@ -423,4 +423,12 @@ public void onError() { throw new AssertionError(ex); } } + + // JDK-8282134 Certain regex can cause a JS trap in WebView + @Test public void jsRegexpTrapTest() { + final String FILE = "src/test/resources/test/html/unicode.html"; + load(new File(FILE)); + WebEngine web = getEngine(); + assertTrue("Load task completed successfully", getLoadState() == SUCCEEDED); + } } diff --git a/modules/javafx.web/src/test/resources/test/html/unicode.html b/modules/javafx.web/src/test/resources/test/html/unicode.html new file mode 100644 index 00000000000..4bafe3761d7 --- /dev/null +++ b/modules/javafx.web/src/test/resources/test/html/unicode.html @@ -0,0 +1,13 @@ + + + + + +

PASS

+ + +