Hi Anton,

Thanks for the report - that’s a really interesting one!

I’ll file a bug for it, but given that Nashorn is deprecated and this is part 
of the incomplete ES6 support I don’t think it will be deemed worthy of a 8u 
backport.

Hannes


> Am 09.08.2019 um 11:16 schrieb Anton Mitrofanov <mitrofa...@krista.ru>:
> 
> Hi.
> 
> We have encountered a bug in Nashorn with JDK8 u221. It can be reproduced by 
> evaluation of this script with "jjs --language=es6":
> 
> {{{{{{{{{{{{{{{ let x; }}}}}}}}}}}}}}}
> 
> It results in "java.lang.ArrayIndexOutOfBoundsException: 16" output. It need 
> exactly 15 curly braces to cause this bug.
> 
> And here is the patch to fix it:
> 
> diff -r 06eed83ab4cd 
> src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/LexicalContext.java
> --- 
> a/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/LexicalContext.java
>        Tue Aug 06 12:14:41 20>
> +++ 
> b/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/LexicalContext.java
>        Fri Aug 09 11:37:23 20>
> @@ -697,7 +697,7 @@
>      * @return {@code true} if in unprotected switch statement.
>      */
>     public boolean inUnprotectedSwitchContext() {
> -        for (int i = sp; i > 0; i--) {
> +        for (int i = sp - 1; i > 0; i--) {
>             final LexicalContextNode next = stack[i];
>             if (next instanceof Block) {
>                 return stack[i - 1] instanceof SwitchNode;
> 
> P.S. Can we expect that this bug will be fixed in JDK8 updates?
> 

Reply via email to