### Eclipse Workspace Patch 1.0
#P org.eclipse.compare.tests
Index: src/org/eclipse/compare/tests/DocLineComparatorTest.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.compare.tests/src/org/eclipse/compare/tests/DocLineComparatorTest.java,v
retrieving revision 1.5
diff -u -r1.5 DocLineComparatorTest.java
--- src/org/eclipse/compare/tests/DocLineComparatorTest.java 26 Jan 2009 09:44:27 -0000 1.5
+++ src/org/eclipse/compare/tests/DocLineComparatorTest.java 1 Apr 2009 14:54:01 -0000
@@ -80,7 +80,7 @@
Assert.assertTrue(comp1.rangesEqual(0, comp2, 0));
Assert.assertEquals(comp1.getRangeCount(), comp2.getRangeCount());
- Assert.assertEquals(0, comp2.getRangeCount());
+ Assert.assertEquals(1, comp2.getRangeCount());
}
public void testOneLine() {
#P org.eclipse.compare
Index: compare/org/eclipse/compare/internal/DocLineComparator.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java,v
retrieving revision 1.20
diff -u -r1.20 DocLineComparator.java
--- compare/org/eclipse/compare/internal/DocLineComparator.java 26 Jan 2009 09:44:25 -0000 1.20
+++ compare/org/eclipse/compare/internal/DocLineComparator.java 1 Apr 2009 14:54:03 -0000
@@ -39,33 +39,36 @@
* @param region if non-null
only lines within this range are taken
* @param ignoreWhiteSpace if true
white space is ignored when comparing lines
*/
- public DocLineComparator(IDocument document, IRegion region, boolean ignoreWhiteSpace) {
-
- fDocument= document;
- fIgnoreWhiteSpace= ignoreWhiteSpace;
-
- fLineOffset= 0;
- if (region == null) {
- region = new Region(0, fDocument.getLength());
- }
- fLength= region.getLength();
- int start= region.getOffset();
- try {
- fLineOffset= fDocument.getLineOfOffset(start);
- } catch (BadLocationException ex) {
- // silently ignored
- }
-
- if (fLength == 0)
- fLineCount= 0;
- else {
- int endLine= fDocument.getNumberOfLines();
+ public DocLineComparator(IDocument document, IRegion region,
+ boolean ignoreWhiteSpace) {
+ fDocument = document;
+ fIgnoreWhiteSpace = ignoreWhiteSpace;
+
+ fLineOffset = 0;
+ if (region != null) {
+ fLength = region.getLength();
+ int start = region.getOffset();
try {
- endLine= fDocument.getLineOfOffset(start + fLength);
+ fLineOffset = fDocument.getLineOfOffset(start);
} catch (BadLocationException ex) {
// silently ignored
}
- fLineCount= endLine - fLineOffset + 1;
+
+ if (fLength == 0) {
+ // optimization, empty documents have one line
+ fLineCount = 1;
+ } else {
+ int endLine = fDocument.getNumberOfLines();
+ try {
+ endLine = fDocument.getLineOfOffset(start + fLength);
+ } catch (BadLocationException ex) {
+ // silently ignored
+ }
+ fLineCount = endLine - fLineOffset + 1;
+ }
+ } else {
+ fLength = document.getLength();
+ fLineCount = fDocument.getNumberOfLines();
}
}