From 5f8aa2e9b0f58e9f0436275ab0feb44a70fdf622 Mon Sep 17 00:00:00 2001 From: Philipp Eichhorn Date: Thu, 5 Jul 2012 22:42:43 +0200 Subject: fixed stupid memleak in PatchExtensionMethod.. sorry my bad.. --- .../lombok/eclipse/agent/PatchExtensionMethod.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/eclipseAgent/lombok/eclipse/agent/PatchExtensionMethod.java b/src/eclipseAgent/lombok/eclipse/agent/PatchExtensionMethod.java index ebfb1a05..b96f70c9 100644 --- a/src/eclipseAgent/lombok/eclipse/agent/PatchExtensionMethod.java +++ b/src/eclipseAgent/lombok/eclipse/agent/PatchExtensionMethod.java @@ -23,6 +23,7 @@ package lombok.eclipse.agent; import static lombok.eclipse.handlers.EclipseHandlerUtil.createAnnotation; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -66,35 +67,37 @@ public class PatchExtensionMethod { private static class PostponedNoMethodError implements PostponedError { private final ProblemReporter problemReporter; - private final MessageSend messageSend; + private final WeakReference messageSendRef; private final TypeBinding recType; private final TypeBinding[] params; PostponedNoMethodError(ProblemReporter problemReporter, MessageSend messageSend, TypeBinding recType, TypeBinding[] params) { this.problemReporter = problemReporter; - this.messageSend = messageSend; + this.messageSendRef = new WeakReference(messageSend); this.recType = recType; this.params = params; } public void fire() { - problemReporter.errorNoMethodFor(messageSend, recType, params); + MessageSend messageSend = messageSendRef.get(); + if (messageSend != null) problemReporter.errorNoMethodFor(messageSend, recType, params); } } private static class PostponedInvalidMethodError implements PostponedError { private final ProblemReporter problemReporter; - private final MessageSend messageSend; + private final WeakReference messageSendRef; private final MethodBinding method; PostponedInvalidMethodError(ProblemReporter problemReporter, MessageSend messageSend, MethodBinding method) { this.problemReporter = problemReporter; - this.messageSend = messageSend; + this.messageSendRef = new WeakReference(messageSend); this.method = method; } public void fire() { - problemReporter.invalidMethod(messageSend, method); + MessageSend messageSend = messageSendRef.get(); + if (messageSend != null) problemReporter.invalidMethod(messageSend, method); } } @@ -277,7 +280,4 @@ public class PatchExtensionMethod { return new QualifiedNameReference(sources, poss, source.sourceStart, source.sourceEnd); } } - - - } -- cgit