Closed Bug 292324 Opened 20 years ago Closed 20 years ago

ArrayIndexOutOfBoundsException while compiling a script

Categories

(Rhino Graveyard :: Compiler, defect)

defect
Not set
major

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: szegedia, Assigned: igor)

References

Details

Attachments

(2 files, 1 obsolete file)

User-Agent: Opera/8.0 (Windows NT 5.0; U; en) Build Identifier: An attempt to compile the attached script will throw an ArrayIndexOutOfBoundsException in the interpreter. Reproducible: Always Steps to Reproduce: 1. Paste the attached function definition into a Rhino console (you might have to do it twice as first time it will complain "java.io.IOException: Not enough storage is available to process this command" - ignore it, and paste the function code once more) 2. 3. Actual Results: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1024 at org.mozilla.javascript.Interpreter.recordJump(Interpreter.java:1524) at org.mozilla.javascript.Interpreter.addGoto(Interpreter.java:1456) at org.mozilla.javascript.Interpreter.visitStatement(Interpreter.java: 719) at org.mozilla.javascript.Interpreter.visitStatement(Interpreter.java: 652) at org.mozilla.javascript.Interpreter.visitStatement(Interpreter.java: 673) at org.mozilla.javascript.Interpreter.visitStatement(Interpreter.java: 652) at org.mozilla.javascript.Interpreter.generateICodeFromTree(Interpreter. java:502) at org.mozilla.javascript.Interpreter.generateFunctionICode(Interpreter. java:493) at org.mozilla.javascript.Interpreter. generateNestedFunctions(Interpreter.java:577) at org.mozilla.javascript.Interpreter.generateICodeFromTree(Interpreter. java:498) at org.mozilla.javascript.Interpreter.compile(Interpreter.java:455) at org.mozilla.javascript.Context.compileImpl(Context.java:2220) at org.mozilla.javascript.Context.compileString(Context.java:1284) at org.mozilla.javascript.Context.compileString(Context.java:1273) at org.mozilla.javascript.Context.evaluateString(Context.java:1129) at org.mozilla.javascript.tools.shell.Main.evaluateScript(Main.java:453) at org.mozilla.javascript.tools.shell.Main.processSource(Main.java:341) at org.mozilla.javascript.tools.shell.Main.processFiles(Main.java:160) at org.mozilla.javascript.tools.shell.Main$IProxy.run(Main.java:83) at org.mozilla.javascript.Context.call(Context.java:528) at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:414) at org.mozilla.javascript.tools.shell.Main.exec(Main.java:140) at org.mozilla.javascript.tools.shell.Main.main(Main.java:112) Expected Results: Should have silently compiled the function.
A trivial change to the script, i.e. rewriting f2("a0=" + a0); to f2("a0="); or even var x = "a0=" + a0; f2(x); will make the compilation succeed. So, while it can be worked around, it should be fixed as there's no guarantee that the compiled code is correct if the script compiler otherwise has a bug.
*** Bug 296959 has been marked as a duplicate of this bug. ***
(In reply to comment #2) > *** Bug 296959 has been marked as a duplicate of this bug. *** On this second page with description of bug 296959 there is proposed solution for it.
Thanks a lot - I transformed your proposal into a committable patch. Hopefully sooner or later a Rhino committer will come along and commit it to CVS.
Forget the previous one, mistakenly attached whole Interpreter.java instead of just the diff :-[
Attachment #185596 - Attachment is obsolete: true
There is a bug in the patch i have proposed, it should be: int capacity = itsData.itsICode.length; int capacityNeeded = offsetSite+2; if( capacity<capacityNeeded) { increaseICodeCapasity( capacityNeeded-itsICodeTop); } ^^^^^^^^^^^ Instead of: int capacity = itsData.itsICode.length; int capacityNeeded = offsetSite+2; if( capacity<capacityNeeded) { increaseICodeCapasity( capacityNeeded-capacity); } ^^^^^^^^
(In reply to comment #6) > There is a bug in the patch i have proposed, it should be: > > int capacity = itsData.itsICode.length; > int capacityNeeded = offsetSite+2; > if( capacity<capacityNeeded) { > increaseICodeCapasity( capacityNeeded-itsICodeTop); > } > ^^^^^^^^^^^ Note that the version of patch from Attila already contains the proper fix.
(In reply to comment #5) > Created an attachment (id=185597) [edit] > Committable patch, based on the fix proposed by hauserx@gmail.com > I committed the patch.
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: