diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/JavaScriptException.java b/mozilla/js/rhino/src/org/mozilla/javascript/JavaScriptException.java index ebefd2bb45b..dae0b001afb 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/JavaScriptException.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/JavaScriptException.java @@ -64,7 +64,7 @@ public class JavaScriptException extends Exception public JavaScriptException(Object value, String sourceName, int lineNumber) { super(EvaluatorException.generateErrorMessage( - ScriptRuntime.toString(value), sourceName, lineNumber)); + toMessage(value), sourceName, lineNumber)); this.lineNumber = lineNumber; this.sourceName = sourceName; this.value = value; @@ -96,6 +96,15 @@ public class JavaScriptException extends Exception return lineNumber; } + private static String toMessage(Object object) + { + if (object instanceof Scriptable) { + // to prevent potential of evaluation and throwing more exceptions + return ScriptRuntime.defaultObjectToString((Scriptable)object); + } + return ScriptRuntime.toString(object); + } + private Object value; private String sourceName; private int lineNumber; diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/NativeObject.java b/mozilla/js/rhino/src/org/mozilla/javascript/NativeObject.java index 7a05a14149c..3edf16977eb 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/NativeObject.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/NativeObject.java @@ -56,7 +56,7 @@ public class NativeObject extends IdScriptable public String toString() { - return NativeObjectPrototype.toString(this); + return ScriptRuntime.defaultObjectToString(this); } protected int mapNameToId(String s) { return 0; } @@ -118,7 +118,7 @@ final class NativeObjectPrototype extends NativeObject } return s; } - return toString(thisObj); + return ScriptRuntime.defaultObjectToString(thisObj); } case Id_valueOf: @@ -167,11 +167,6 @@ final class NativeObjectPrototype extends NativeObject return super.execMethod(methodId, f, cx, scope, thisObj, args); } - static String toString(Scriptable thisObj) - { - return "[object " + thisObj.getClassName() + "]"; - } - private static String toSource(Context cx, Scriptable scope, Scriptable thisObj, Object[] args) throws JavaScriptException diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/ScriptRuntime.java b/mozilla/js/rhino/src/org/mozilla/javascript/ScriptRuntime.java index 0e6dea72f8e..825764a60a8 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/ScriptRuntime.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/ScriptRuntime.java @@ -544,6 +544,11 @@ public class ScriptRuntime { } } + static String defaultObjectToString(Scriptable obj) + { + return "[object " + obj.getClassName() + "]"; + } + public static String toString(Object[] args, int index) { return (index < args.length) ? toString(args[index]) : "undefined"; }