From de59febfddbe38cc18a17ebf2fdf7e5bc9d8ef13 Mon Sep 17 00:00:00 2001 From: "nboyd%atg.com" Date: Sun, 10 Dec 2000 18:33:52 +0000 Subject: [PATCH] Fix bug where "a = new Array[3]" would produce an IndexOutOfBoundsException git-svn-id: svn://10.0.0.236/trunk@83475 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/js/rhino/org/mozilla/javascript/Interpreter.java | 9 ++++++--- .../js/rhino/src/org/mozilla/javascript/Interpreter.java | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/mozilla/js/rhino/org/mozilla/javascript/Interpreter.java b/mozilla/js/rhino/org/mozilla/javascript/Interpreter.java index 52dc30bdd17..5c46f326419 100644 --- a/mozilla/js/rhino/org/mozilla/javascript/Interpreter.java +++ b/mozilla/js/rhino/org/mozilla/javascript/Interpreter.java @@ -417,8 +417,7 @@ public class Interpreter extends LabelTable { iCodeTop = addByte((byte)(itsLineNumber >> 8), iCodeTop); iCodeTop = addByte((byte)(itsLineNumber & 0xff), iCodeTop); iCodeTop = addString(itsSourceFile, iCodeTop); - } - else { + } else { iCodeTop = addByte((byte) type, iCodeTop); iCodeTop = addByte((byte)(nameIndex >> 8), iCodeTop); iCodeTop = addByte((byte)(nameIndex & 0xFF), iCodeTop); @@ -1727,7 +1726,11 @@ public class Interpreter extends LabelTable { for (i = count - 1; i >= 0; i--) outArgs[i] = stack[stackTop--]; lhs = stack[stackTop]; - if (lhs == undefined) { + if (lhs == undefined && + (iCode[pc+1] << 8) + (iCode[pc+2] & 0xFF) != -1) + { + // special code for better error message for call + // to undefined lhs = getString(theData.itsStringTable, iCode, pc + 1); } diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/Interpreter.java b/mozilla/js/rhino/src/org/mozilla/javascript/Interpreter.java index 52dc30bdd17..5c46f326419 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/Interpreter.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/Interpreter.java @@ -417,8 +417,7 @@ public class Interpreter extends LabelTable { iCodeTop = addByte((byte)(itsLineNumber >> 8), iCodeTop); iCodeTop = addByte((byte)(itsLineNumber & 0xff), iCodeTop); iCodeTop = addString(itsSourceFile, iCodeTop); - } - else { + } else { iCodeTop = addByte((byte) type, iCodeTop); iCodeTop = addByte((byte)(nameIndex >> 8), iCodeTop); iCodeTop = addByte((byte)(nameIndex & 0xFF), iCodeTop); @@ -1727,7 +1726,11 @@ public class Interpreter extends LabelTable { for (i = count - 1; i >= 0; i--) outArgs[i] = stack[stackTop--]; lhs = stack[stackTop]; - if (lhs == undefined) { + if (lhs == undefined && + (iCode[pc+1] << 8) + (iCode[pc+2] & 0xFF) != -1) + { + // special code for better error message for call + // to undefined lhs = getString(theData.itsStringTable, iCode, pc + 1); }