Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKai Maetzel2004-03-25 11:43:20 +0000
committerKai Maetzel2004-03-25 11:43:20 +0000
commitb5cb3413107078b9fe8db8dc17842a985a529bea (patch)
treea96037dd1f2911b22a51a7fd72e9645f9cb8ce73 /org.eclipse.ui.workbench.texteditor
parent5a2c2dd3486bca0b0d22a8463747743e77aab806 (diff)
downloadeclipse.platform.text-b5cb3413107078b9fe8db8dc17842a985a529bea.tar.gz
eclipse.platform.text-b5cb3413107078b9fe8db8dc17842a985a529bea.tar.xz
eclipse.platform.text-b5cb3413107078b9fe8db8dc17842a985a529bea.zip
Diffstat (limited to 'org.eclipse.ui.workbench.texteditor')
-rw-r--r--org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/DocumentLineDiffer.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/DocumentLineDiffer.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/DocumentLineDiffer.java
index 6241bfce16e..772a10ba4a2 100644
--- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/DocumentLineDiffer.java
+++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/DocumentLineDiffer.java
@@ -424,8 +424,8 @@ public class DocumentLineDiffer implements ILineDiffer, IDocumentListener, IAnno
// access documents unsynched:
// get an exclusive copy of the actual document
- reference= new Document(left.get());
- actual= new Document(right.get());
+ reference= createCopy(left);
+ actual= createCopy(right);
synchronized (DocumentLineDiffer.this) {
if (fStoredEvents.size() == 0)
@@ -510,6 +510,22 @@ public class DocumentLineDiffer implements ILineDiffer, IDocumentListener, IAnno
fDifferences.clear();
}
+ private IDocument createCopy(IDocument document) {
+ Assert.isNotNull(document);
+ // TODO needs for sure a safer synchronization method
+ // this is a temporary workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=56091
+ int count= 0;
+ while (count < 100) {
+ try {
+ return new Document(document.get());
+ } catch (NullPointerException x) {
+ } catch (ArrayStoreException x) {
+ } catch (IndexOutOfBoundsException x) {
+ }
+ ++ count;
+ }
+ return new Document();
+ }
};
fInitializationJob.setSystem(true);

Back to the top