From 3d48bf4f022694bbfb29a6c25060bbbdfe559902 Mon Sep 17 00:00:00 2001 From: John Cortell Date: Mon, 17 Nov 2008 16:06:47 +0000 Subject: [PATCH] Trivialize the leak caused by bugzilla 255120 (debug platform) by clearing the reference to CDebugTarget in the dispose() method. --- .../core/CMemoryBlockRetrievalExtension.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CMemoryBlockRetrievalExtension.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CMemoryBlockRetrievalExtension.java index 46c1c301ebf..b91f8dcb2c0 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CMemoryBlockRetrievalExtension.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CMemoryBlockRetrievalExtension.java @@ -189,7 +189,7 @@ public class CMemoryBlockRetrievalExtension extends PlatformObject implements IM BigInteger addrBigInt = null; String memorySpaceID = null; - if (hasMemorySpaces()) { + if (hasMemorySpaces() && fDebugTarget != null) { // Can't tell if block was created with a memory-space/address or with an expression. // Assume the former and let an exception in the decoding tell us otherwise ICDITarget cdiTarget = fDebugTarget.getCDITarget(); @@ -392,6 +392,8 @@ public class CMemoryBlockRetrievalExtension extends PlatformObject implements IM } public void dispose() { + // Minimize leaks. See bugzilla 255120 + fDebugTarget = null; } /** @@ -410,9 +412,11 @@ public class CMemoryBlockRetrievalExtension extends PlatformObject implements IM * @return an array of memory space identifiers */ public String [] getMemorySpaces() { - ICDITarget cdiTarget = fDebugTarget.getCDITarget(); - if (cdiTarget instanceof ICDIMemorySpaceManagement) - return ((ICDIMemorySpaceManagement)cdiTarget).getMemorySpaces(); + if (fDebugTarget != null) { + ICDITarget cdiTarget = fDebugTarget.getCDITarget(); + if (cdiTarget instanceof ICDIMemorySpaceManagement) + return ((ICDIMemorySpaceManagement)cdiTarget).getMemorySpaces(); + } return new String[0]; }