Browse Source

fix for Bugzilla Bug 36673

   VerifyError in privileged aspect
tags/V1_1_0_RC2
jhugunin 21 years ago
parent
commit
73ae16b4ce

+ 3
- 0
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedFieldBinding.java View File

@@ -54,6 +54,9 @@ public class PrivilegedFieldBinding extends FieldBinding {


public SyntheticAccessMethodBinding getAccessMethod(boolean isReadAccess) {
if (baseField.alwaysNeedsAccessMethod(isReadAccess)) {
return baseField.getAccessMethod(isReadAccess);
}
if (isReadAccess) return reader;
else return writer;
}

+ 4
- 2
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.java View File

@@ -43,16 +43,18 @@ public class PrivilegedHandler implements IPrivilegedHandler {
this.inAspect = inAspect;
}

public FieldBinding getPrivilegedAccessField(FieldBinding baseField, AstNode location) {
public FieldBinding getPrivilegedAccessField(FieldBinding baseField, AstNode location) {
ResolvedMember key = inAspect.factory.makeResolvedMember(baseField);
if (accessors.containsKey(key)) return (FieldBinding)accessors.get(key);
FieldBinding ret = new PrivilegedFieldBinding(inAspect, baseField);
checkWeaveAccess(key.getDeclaringType(), location);
accessors.put(key, ret);
if (!baseField.alwaysNeedsAccessMethod(true)) accessors.put(key, ret);
return ret;
}

public MethodBinding getPrivilegedAccessMethod(MethodBinding baseMethod, AstNode location) {
if (baseMethod.alwaysNeedsAccessMethod()) return baseMethod;
ResolvedMember key = inAspect.factory.makeResolvedMember(baseMethod);
if (accessors.containsKey(key)) return (MethodBinding)accessors.get(key);

Loading…
Cancel
Save