check defining classloader in SAME_PACKAGE
authoredwin <none@none>
Sun, 27 Mar 2005 18:57:00 +0000 (18:57 +0000)
committeredwin <none@none>
Sun, 27 Mar 2005 18:57:00 +0000 (18:57 +0000)
src/vm/access.c
src/vm/access.h

index 46ea6ed43b26a257650af0dd307611ff8cfeb600..728ea014b5cc8066cfbfabaa8230d12f3049a8c0 100644 (file)
@@ -28,7 +28,7 @@
 
    Changes:
 
-   $Id: access.c 2074 2005-03-25 12:23:30Z edwin $
+   $Id: access.c 2096 2005-03-27 18:57:00Z edwin $
 
 */
 
@@ -60,6 +60,8 @@ is_accessible_class(classinfo *referer,classinfo *cls)
 {
        ACCESS_ASSERT(referer);
        ACCESS_ASSERT(cls);
+
+       /* XXX specially check access to array classes? (vmspec 5.3.3) */
        
        /* public classes are always accessible */
        if ((cls->flags & ACC_PUBLIC) != 0)
@@ -103,6 +105,7 @@ is_accessible_member(classinfo *referer,classinfo *declarer,s4 memberflags)
        /* {the member is protected and declarer is in another package} */
 
        /* a necessary condition for access is that referer is a subclass of declarer */
+       ACCESS_ASSERT(referer->linked && declarer->linked);
        if (builtin_isanysubclass(referer,declarer))
                return true;
 
index b81a3c3db5c4dbe37e6e74442c873a3d8a7a98f2..839e9743ec73c606414f6fc52c6f54081eef0563 100644 (file)
@@ -28,7 +28,7 @@
 
    Changes:
 
-   $Id: access.h 2074 2005-03-25 12:23:30Z edwin $
+   $Id: access.h 2096 2005-03-27 18:57:00Z edwin $
 
 */
 
@@ -39,8 +39,9 @@
 
 /* macros *********************************************************************/
 
-#define SAME_PACKAGE(a,b) \
-                       ((a)->packagename == (b)->packagename)
+#define SAME_PACKAGE(a,b)                                  \
+                       ((a)->classloader == (b)->classloader &&       \
+                        (a)->packagename == (b)->packagename)
 
 /* function prototypes ********************************************************/