/[classpath]/classpath/java/lang/Class.java
ViewVC logotype

Diff of /classpath/java/lang/Class.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.29 by archie172, Tue Jan 4 17:45:50 2005 UTC revision 1.30 by archie172, Tue Jan 4 19:18:29 2005 UTC
# Line 38  exception statement from your version. * Line 38  exception statement from your version. *
38    
39  package java.lang;  package java.lang;
40    
 import gnu.classpath.VMStackWalker;  
   
41  import java.io.InputStream;  import java.io.InputStream;
42  import java.io.Serializable;  import java.io.Serializable;
43  import java.lang.reflect.Constructor;  import java.lang.reflect.Constructor;
# Line 159  public final class Class implements Seri Line 157  public final class Class implements Seri
157      Class result = VMClass.forName (name);      Class result = VMClass.forName (name);
158      if (result == null)      if (result == null)
159        result = Class.forName(name, true,        result = Class.forName(name, true,
160          VMStackWalker.getCallingClassLoader());                               VMSecurityManager.getClassContext()[1].getClassLoader());
161      return result;      return result;
162    }    }
163    
# Line 200  public final class Class implements Seri Line 198  public final class Class implements Seri
198          SecurityManager sm = SecurityManager.current;          SecurityManager sm = SecurityManager.current;
199          if (sm != null)          if (sm != null)
200            {            {
201              // Get the calling classloader              // Get the calling class and classloader
202              ClassLoader cl = VMStackWalker.getCallingClassLoader();              Class c = VMSecurityManager.getClassContext()[1];
203                ClassLoader cl = c.getClassLoader();
204              if (cl != null)              if (cl != null)
205                sm.checkPermission(new RuntimePermission("getClassLoader"));                sm.checkPermission(new RuntimePermission("getClassLoader"));
206            }            }
# Line 279  public final class Class implements Seri Line 278  public final class Class implements Seri
278      SecurityManager sm = SecurityManager.current;      SecurityManager sm = SecurityManager.current;
279      if (sm != null)      if (sm != null)
280        {        {
281          // Get the calling classloader          // Get the calling class and classloader
282          ClassLoader cl = VMStackWalker.getCallingClassLoader();          Class c = VMSecurityManager.getClassContext()[1];
283            ClassLoader cl = VMClass.getClassLoader(c);
284          if (cl != null && !cl.isAncestorOf(loader))          if (cl != null && !cl.isAncestorOf(loader))
285            sm.checkPermission(new RuntimePermission("getClassLoader"));            sm.checkPermission(new RuntimePermission("getClassLoader"));
286        }        }
# Line 1132  public final class Class implements Seri Line 1132  public final class Class implements Seri
1132      int modifiers = constructor.getModifiers();      int modifiers = constructor.getModifiers();
1133      if (!Modifier.isPublic(modifiers))      if (!Modifier.isPublic(modifiers))
1134        {        {
1135          Class caller = VMStackWalker.getCallingClass();          Class caller = VMSecurityManager.getClassContext()[1];
1136          if (caller != null &&          if (caller != this &&
             caller != this &&  
1137              (Modifier.isPrivate(modifiers)              (Modifier.isPrivate(modifiers)
1138               || getClassLoader() != caller.getClassLoader()               || getClassLoader() != caller.getClassLoader()
1139               || !getPackagePortion(getName())               || !getPackagePortion(getName())

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.30

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26