Class cache/reuse of 'eval' scripts results in ClassCastException in some cases.

XMLWordPrintable

    • Type: Sub-task
    • Resolution: Fixed
    • Priority: P3
    • 8
    • Affects Version/s: 8
    • Component/s: core-libs
    • None
    • b113
    • generic
    • generic

      Test case:

      var m = new javax.script.ScriptEngineManager();
      var e = m.getEngineByName('js');

      e.eval('function f(e){ eval("e") } f()');
      e.eval('function f(){ var e = 33; eval("e") } f()')

      The above throws Exception in thread "main" java.lang.ClassCastException: Cannot cast jdk.nashorn.internal.scripts.JO2P0 to jdk.nashorn.internal.scripts.JO1P1
      at sun.invoke.util.ValueConversions.newClassCastException(ValueConversions.java:461)
      at sun.invoke.util.ValueConversions.castReference(ValueConversions.java:456)
      at jdk.nashorn.internal.scripts.Script$\^eval\_#1\^eval\_.runScript(<eval>#1<eval>:1)

            Assignee:
            Sundararajan Athijegannathan
            Reporter:
            Sundararajan Athijegannathan
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: