BSF interface - apply nonfunctional with parameters ---------------------------------------------------
Key: JRUBY-3782 URL: http://jira.codehaus.org/browse/JRUBY-3782 Project: JRuby Issue Type: Bug Components: Embedding Affects Versions: JRuby 1.3.1 Environment: Linux Ubuntu 8.04 LTS Java(TM) SE Runtime Environment (build 1.6.0_10) Reporter: Andreas Wundsam Attachments: TestRubyBSFApplyBug.java Calling the BSF interface apply with a non-empty Vector of names and objects results in an IndexOutOfBoundsException: BSFManager m = new BSFManager(); Vector<String> names = new Vector<String>(); Vector<Object> objects = new Vector<Object>(); names.add("activity"); objects.add(new Integer(1)); m.apply("ruby", "(java)", 1,1, "puts \"Hello, world: #{activity}\" ", names, objects ); Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at org.jruby.runtime.scope.ManyVarsDynamicScope.setValueDepthZero(ManyVarsDynamicScope.java:158) at org.jruby.runtime.scope.ManyVarsDynamicScope.setValue(ManyVarsDynamicScope.java:151) at org.jruby.javasupport.bsf.JRubyEngine.apply(JRubyEngine.java:78) at org.apache.bsf.BSFManager$1.run(BSFManager.java:215) at java.security.AccessController.doPrivileged(Native Method) at org.apache.bsf.BSFManager.apply(BSFManager.java:212) at de.lerncultur.script.TestRuby.main(TestRuby.java:25) As far as I can see, the ManyVarsDynamic scope gets created too early in this case. It inherits a variable count of "0" from its enclosing static scope. Later, the variable names are set in the static scope, but that does not result in a recreationg of the dynamic scope. That's why the actual value assignment fails. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email