diff --git a/js/rhino/org/mozilla/javascript/Context.java b/js/rhino/org/mozilla/javascript/Context.java index 7af9af334990..0069e464ad19 100644 --- a/js/rhino/org/mozilla/javascript/Context.java +++ b/js/rhino/org/mozilla/javascript/Context.java @@ -1754,14 +1754,16 @@ public final class Context { Object result = null; if (securitySupport != null) { Class[] classes = securitySupport.getClassContext(); - if (depth != -1) { - int depth1 = depth + 1; - result = getSecurityDomainFromClass(classes[depth1]); - } else { - for (int i=1; i < classes.length; i++) { - result = getSecurityDomainFromClass(classes[i]); - if (result != null) - break; + if (classes != null) { + if (depth != -1) { + int depth1 = depth + 1; + result = getSecurityDomainFromClass(classes[depth1]); + } else { + for (int i=1; i < classes.length; i++) { + result = getSecurityDomainFromClass(classes[i]); + if (result != null) + break; + } } } } diff --git a/js/rhino/org/mozilla/javascript/JavaAdapter.java b/js/rhino/org/mozilla/javascript/JavaAdapter.java index 429830455aea..126a135c9c49 100644 --- a/js/rhino/org/mozilla/javascript/JavaAdapter.java +++ b/js/rhino/org/mozilla/javascript/JavaAdapter.java @@ -283,17 +283,18 @@ public class JavaAdapter extends ScriptableObject { SecuritySupport ss = cx.getSecuritySupport(); if (ss != null) { Object securityDomain = cx.getSecurityDomainForStackDepth(-1); - return ss.defineClass(adapterName, bytes, securityDomain); - } else { - if (classLoader == null) - classLoader = new MyClassLoader(); - classLoader.defineClass(adapterName, bytes); - return classLoader.loadClass(adapterName, true); - } + Class result = ss.defineClass(adapterName, bytes, securityDomain); + if (result != null) + return result; + } + if (classLoader == null) + classLoader = new MyClassLoader(); + classLoader.defineClass(adapterName, bytes); + return classLoader.loadClass(adapterName, true); } /** - * Utility method, which dynamically binds a Context to the current thread, + * Utility method which dynamically binds a Context to the current thread, * if none already exists. */ public static Object callMethod(Scriptable object, Object thisObj, diff --git a/js/rhino/org/mozilla/javascript/optimizer/Codegen.java b/js/rhino/org/mozilla/javascript/optimizer/Codegen.java index ac8737f820e5..aab4d5f6a413 100644 --- a/js/rhino/org/mozilla/javascript/optimizer/Codegen.java +++ b/js/rhino/org/mozilla/javascript/optimizer/Codegen.java @@ -118,17 +118,18 @@ public class Codegen extends Interpreter { } } try { - Class clazz; - if (securitySupport == null) { + Class clazz = null; + if (securitySupport != null) { + clazz = securitySupport.defineClass(name, classFile, + securityDomain); + } + if (clazz == null) { Context.checkSecurityDomainRequired(); if (classLoader == null) classLoader = new JavaScriptClassLoader(); clazz = classLoader.defineClass(name, classFile); ClassLoader loader = clazz.getClassLoader(); clazz = loader.loadClass(name); - } else { - clazz = securitySupport.defineClass(name, classFile, - securityDomain); } if (name.equals(generatedName)) result = clazz; diff --git a/js/rhino/src/org/mozilla/javascript/Context.java b/js/rhino/src/org/mozilla/javascript/Context.java index 7af9af334990..0069e464ad19 100644 --- a/js/rhino/src/org/mozilla/javascript/Context.java +++ b/js/rhino/src/org/mozilla/javascript/Context.java @@ -1754,14 +1754,16 @@ public final class Context { Object result = null; if (securitySupport != null) { Class[] classes = securitySupport.getClassContext(); - if (depth != -1) { - int depth1 = depth + 1; - result = getSecurityDomainFromClass(classes[depth1]); - } else { - for (int i=1; i < classes.length; i++) { - result = getSecurityDomainFromClass(classes[i]); - if (result != null) - break; + if (classes != null) { + if (depth != -1) { + int depth1 = depth + 1; + result = getSecurityDomainFromClass(classes[depth1]); + } else { + for (int i=1; i < classes.length; i++) { + result = getSecurityDomainFromClass(classes[i]); + if (result != null) + break; + } } } } diff --git a/js/rhino/src/org/mozilla/javascript/JavaAdapter.java b/js/rhino/src/org/mozilla/javascript/JavaAdapter.java index 429830455aea..126a135c9c49 100644 --- a/js/rhino/src/org/mozilla/javascript/JavaAdapter.java +++ b/js/rhino/src/org/mozilla/javascript/JavaAdapter.java @@ -283,17 +283,18 @@ public class JavaAdapter extends ScriptableObject { SecuritySupport ss = cx.getSecuritySupport(); if (ss != null) { Object securityDomain = cx.getSecurityDomainForStackDepth(-1); - return ss.defineClass(adapterName, bytes, securityDomain); - } else { - if (classLoader == null) - classLoader = new MyClassLoader(); - classLoader.defineClass(adapterName, bytes); - return classLoader.loadClass(adapterName, true); - } + Class result = ss.defineClass(adapterName, bytes, securityDomain); + if (result != null) + return result; + } + if (classLoader == null) + classLoader = new MyClassLoader(); + classLoader.defineClass(adapterName, bytes); + return classLoader.loadClass(adapterName, true); } /** - * Utility method, which dynamically binds a Context to the current thread, + * Utility method which dynamically binds a Context to the current thread, * if none already exists. */ public static Object callMethod(Scriptable object, Object thisObj, diff --git a/js/rhino/src/org/mozilla/javascript/optimizer/Codegen.java b/js/rhino/src/org/mozilla/javascript/optimizer/Codegen.java index ac8737f820e5..aab4d5f6a413 100644 --- a/js/rhino/src/org/mozilla/javascript/optimizer/Codegen.java +++ b/js/rhino/src/org/mozilla/javascript/optimizer/Codegen.java @@ -118,17 +118,18 @@ public class Codegen extends Interpreter { } } try { - Class clazz; - if (securitySupport == null) { + Class clazz = null; + if (securitySupport != null) { + clazz = securitySupport.defineClass(name, classFile, + securityDomain); + } + if (clazz == null) { Context.checkSecurityDomainRequired(); if (classLoader == null) classLoader = new JavaScriptClassLoader(); clazz = classLoader.defineClass(name, classFile); ClassLoader loader = clazz.getClassLoader(); clazz = loader.loadClass(name); - } else { - clazz = securitySupport.defineClass(name, classFile, - securityDomain); } if (name.equals(generatedName)) result = clazz;