diff options
author | Kai Maetzel | 2004-03-25 11:43:20 +0000 |
---|---|---|
committer | Kai Maetzel | 2004-03-25 11:43:20 +0000 |
commit | b5cb3413107078b9fe8db8dc17842a985a529bea (patch) | |
tree | a96037dd1f2911b22a51a7fd72e9645f9cb8ce73 /org.eclipse.ui.workbench.texteditor | |
parent | 5a2c2dd3486bca0b0d22a8463747743e77aab806 (diff) | |
download | eclipse.platform.text-b5cb3413107078b9fe8db8dc17842a985a529bea.tar.gz eclipse.platform.text-b5cb3413107078b9fe8db8dc17842a985a529bea.tar.xz eclipse.platform.text-b5cb3413107078b9fe8db8dc17842a985a529bea.zip |
#56091v20040325a
Diffstat (limited to 'org.eclipse.ui.workbench.texteditor')
-rw-r--r-- | org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/DocumentLineDiffer.java | 20 |
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); |