From 39bb3d349fc377fdd0882eee1172957fc5656247 Mon Sep 17 00:00:00 2001
From: Andre Weinand
Date: Mon, 22 Nov 2004 15:01:46 +0000
Subject: fixed #47786: Possible leak in TextMergeViewer
---
bundles/org.eclipse.compare/buildnotes_compare.html | 7 +++++++
.../compare/contentmergeviewer/ContentMergeViewer.java | 2 ++
.../eclipse/compare/contentmergeviewer/TextMergeViewer.java | 9 +++++++++
.../org/eclipse/compare/internal/MergeSourceViewer.java | 12 ++++++++++++
.../plugins/org.eclipse.compare/buildnotes_compare.html | 7 +++++++
.../compare/contentmergeviewer/ContentMergeViewer.java | 2 ++
.../eclipse/compare/contentmergeviewer/TextMergeViewer.java | 9 +++++++++
.../org/eclipse/compare/internal/MergeSourceViewer.java | 12 ++++++++++++
8 files changed, 60 insertions(+)
(limited to 'bundles')
diff --git a/bundles/org.eclipse.compare/buildnotes_compare.html b/bundles/org.eclipse.compare/buildnotes_compare.html
index 366b91010..a552024d8 100644
--- a/bundles/org.eclipse.compare/buildnotes_compare.html
+++ b/bundles/org.eclipse.compare/buildnotes_compare.html
@@ -12,6 +12,13 @@
Eclipse Platform Build Notes
Compare
+Eclipse Build Input November 23rd 2004
+
+
Problem reports fixed
+47786: Possible leak in TextMergeViewer
+
+
+
Eclipse Build Input November 16th 2004
Problem reports fixed
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
index ded703e43..950d115ee 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
@@ -853,6 +853,8 @@ public abstract class ContentMergeViewer extends ContentViewer
fHVSashCursor= null;
}
+ CompareViewerPane.clearToolBar(fComposite.getParent());
+
super.handleDispose(event);
}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
index 998246f72..1a460dba1 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
@@ -2002,7 +2002,9 @@ public class TextMergeViewer extends ContentMergeViewer {
} else
tp.setDocument(newDoc);
+ tp.rememberDocument(newDoc);
newDoc.addDocumentListener(fDocumentListener);
+ //LeakTester.add(newDoc);
}
} else { // same document but different range
@@ -2051,7 +2053,13 @@ public class TextMergeViewer extends ContentMergeViewer {
private void unsetDocument(MergeSourceViewer tp) {
IDocument oldDoc= tp.getDocument();
+ if (oldDoc == null) {
+ oldDoc= tp.getRememberedDocument();
+// if (oldDoc != null)
+// System.err.println("TextMergeViewer.unsetDocument: would leak");
+ }
if (oldDoc != null) {
+ tp.rememberDocument(null);
// deinstall old positions
if (fPositionUpdater != null)
oldDoc.removePositionUpdater(fPositionUpdater);
@@ -2062,6 +2070,7 @@ public class TextMergeViewer extends ContentMergeViewer {
}
oldDoc.removeDocumentListener(fDocumentListener);
+ //LeakTester.remove(oldDoc);
}
}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
index 707b2f1ef..46b7a4d60 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
@@ -68,6 +68,7 @@ public class MergeSourceViewer extends SourceViewer
private Position fRegion;
private boolean fEnabled= true;
private HashMap fActions= new HashMap();
+ private IDocument fRememberedDocument;
private boolean fAddSaveAction= true;
@@ -84,6 +85,17 @@ public class MergeSourceViewer extends SourceViewer
te.setMenu(menu.createContextMenu(te));
}
+ public void rememberDocument(IDocument doc) {
+// if (doc != null && fRememberedDocument != null) {
+// System.err.println("MergeSourceViewer.rememberDocument: fRememberedDocument != null: shouldn't happen"); //$NON-NLS-1$
+// }
+ fRememberedDocument= doc;
+ }
+
+ public IDocument getRememberedDocument() {
+ return fRememberedDocument;
+ }
+
public void hideSaveAction() {
fAddSaveAction= false;
}
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html
index 366b91010..a552024d8 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html
@@ -12,6 +12,13 @@
Eclipse Platform Build Notes
Compare
+Eclipse Build Input November 23rd 2004
+
+Problem reports fixed
+47786: Possible leak in TextMergeViewer
+
+
+
Eclipse Build Input November 16th 2004
Problem reports fixed
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
index ded703e43..950d115ee 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
@@ -853,6 +853,8 @@ public abstract class ContentMergeViewer extends ContentViewer
fHVSashCursor= null;
}
+ CompareViewerPane.clearToolBar(fComposite.getParent());
+
super.handleDispose(event);
}
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
index 998246f72..1a460dba1 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
@@ -2002,7 +2002,9 @@ public class TextMergeViewer extends ContentMergeViewer {
} else
tp.setDocument(newDoc);
+ tp.rememberDocument(newDoc);
newDoc.addDocumentListener(fDocumentListener);
+ //LeakTester.add(newDoc);
}
} else { // same document but different range
@@ -2051,7 +2053,13 @@ public class TextMergeViewer extends ContentMergeViewer {
private void unsetDocument(MergeSourceViewer tp) {
IDocument oldDoc= tp.getDocument();
+ if (oldDoc == null) {
+ oldDoc= tp.getRememberedDocument();
+// if (oldDoc != null)
+// System.err.println("TextMergeViewer.unsetDocument: would leak");
+ }
if (oldDoc != null) {
+ tp.rememberDocument(null);
// deinstall old positions
if (fPositionUpdater != null)
oldDoc.removePositionUpdater(fPositionUpdater);
@@ -2062,6 +2070,7 @@ public class TextMergeViewer extends ContentMergeViewer {
}
oldDoc.removeDocumentListener(fDocumentListener);
+ //LeakTester.remove(oldDoc);
}
}
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
index 707b2f1ef..46b7a4d60 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
@@ -68,6 +68,7 @@ public class MergeSourceViewer extends SourceViewer
private Position fRegion;
private boolean fEnabled= true;
private HashMap fActions= new HashMap();
+ private IDocument fRememberedDocument;
private boolean fAddSaveAction= true;
@@ -84,6 +85,17 @@ public class MergeSourceViewer extends SourceViewer
te.setMenu(menu.createContextMenu(te));
}
+ public void rememberDocument(IDocument doc) {
+// if (doc != null && fRememberedDocument != null) {
+// System.err.println("MergeSourceViewer.rememberDocument: fRememberedDocument != null: shouldn't happen"); //$NON-NLS-1$
+// }
+ fRememberedDocument= doc;
+ }
+
+ public IDocument getRememberedDocument() {
+ return fRememberedDocument;
+ }
+
public void hideSaveAction() {
fAddSaveAction= false;
}
--
cgit v1.2.3