Mercurial > hg > openjdk > lambda > jdk
changeset 5826:958eaa191b79 lambda-b50
Fix Hotspot SIGSEGV caused by boot loader ProtectionDomain on Unsafe.defineClass
author | Robert Field <Robert.Field@oracle.com> |
---|---|
date | Thu, 26 Jul 2012 17:00:42 -0700 |
parents | 1e58e328a230 |
children | 2fd2a7092fe1 |
files | src/share/classes/java/lang/invoke/InnerClassGenerator.java |
diffstat | 1 files changed, 5 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/java/lang/invoke/InnerClassGenerator.java Thu Jul 26 12:05:16 2012 -0700 +++ b/src/share/classes/java/lang/invoke/InnerClassGenerator.java Thu Jul 26 17:00:42 2012 -0700 @@ -31,6 +31,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.lang.reflect.Method; +import java.security.ProtectionDomain; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -323,7 +324,10 @@ Logger.getLogger(InnerClassGenerator.class.getName()).log(Level.SEVERE, null, ex); } } - return (Class <? extends T>) unsafe.defineClass(wrapperName, classBytes, 0, classBytes.length, targetClass.getClassLoader(), targetClass.getProtectionDomain()); + + ClassLoader loader = targetClass.getClassLoader(); + ProtectionDomain pd = (loader == null)? null : targetClass.getProtectionDomain(); + return (Class <? extends T>) unsafe.defineClass(wrapperName, classBytes, 0, classBytes.length, loader, pd); } /**