From: edwin Date: Sun, 27 Mar 2005 18:57:00 +0000 (+0000) Subject: check defining classloader in SAME_PACKAGE X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=d87c5789e3f8c697c84e2c24fa3f2dbffd41cf04;p=cacao.git check defining classloader in SAME_PACKAGE --- diff --git a/src/vm/access.c b/src/vm/access.c index 46ea6ed43..728ea014b 100644 --- a/src/vm/access.c +++ b/src/vm/access.c @@ -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; diff --git a/src/vm/access.h b/src/vm/access.h index b81a3c3db..839e9743e 100644 --- a/src/vm/access.h +++ b/src/vm/access.h @@ -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 ********************************************************/