Bug 215844 LineComparator ignores IOExceptions
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/LineComparator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/LineComparator.java
index 43c4080..fbf98c7 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/LineComparator.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/LineComparator.java
@@ -21,21 +21,15 @@
 
     private String[] fLines;
 
-    public LineComparator(InputStream is, String encoding) throws UnsupportedEncodingException {
+    public LineComparator(InputStream is, String encoding) throws IOException {
         
         BufferedReader br = new BufferedReader(new InputStreamReader(is, encoding));
         String line;
         ArrayList ar = new ArrayList();
-        try {
-            while ((line = br.readLine()) != null)
-                ar.add(line);
-        } catch (IOException e) {
-        		// silently ignored
+        while ((line = br.readLine()) != null) {
+            ar.add(line);
         }
-//        try {
-//            is.close();
-//        } catch (IOException e1) {
-//        }
+        // It is the responsibility of the caller to close the stream
         fLines = (String[]) ar.toArray(new String[ar.size()]);
     }
 
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/TextStreamMerger.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/TextStreamMerger.java
index f6bb2346..5ecf4e0 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/TextStreamMerger.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/TextStreamMerger.java
@@ -46,6 +46,8 @@
 			o= new LineComparator(other, otherEncoding);
 		} catch (UnsupportedEncodingException e) {
 			return new Status(IStatus.ERROR, CompareUI.PLUGIN_ID, 1, MergeMessages.TextAutoMerge_inputEncodingError, e);
+		} catch (IOException e) {
+			return new Status(IStatus.ERROR, CompareUI.PLUGIN_ID, 1, e.getMessage(), e);
 		}
 
 		try {
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/LineComparator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/LineComparator.java
index 43c4080..fbf98c7 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/LineComparator.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/LineComparator.java
@@ -21,21 +21,15 @@
 
     private String[] fLines;
 
-    public LineComparator(InputStream is, String encoding) throws UnsupportedEncodingException {
+    public LineComparator(InputStream is, String encoding) throws IOException {
         
         BufferedReader br = new BufferedReader(new InputStreamReader(is, encoding));
         String line;
         ArrayList ar = new ArrayList();
-        try {
-            while ((line = br.readLine()) != null)
-                ar.add(line);
-        } catch (IOException e) {
-        		// silently ignored
+        while ((line = br.readLine()) != null) {
+            ar.add(line);
         }
-//        try {
-//            is.close();
-//        } catch (IOException e1) {
-//        }
+        // It is the responsibility of the caller to close the stream
         fLines = (String[]) ar.toArray(new String[ar.size()]);
     }
 
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/TextStreamMerger.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/TextStreamMerger.java
index f6bb2346..5ecf4e0 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/TextStreamMerger.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/merge/TextStreamMerger.java
@@ -46,6 +46,8 @@
 			o= new LineComparator(other, otherEncoding);
 		} catch (UnsupportedEncodingException e) {
 			return new Status(IStatus.ERROR, CompareUI.PLUGIN_ID, 1, MergeMessages.TextAutoMerge_inputEncodingError, e);
+		} catch (IOException e) {
+			return new Status(IStatus.ERROR, CompareUI.PLUGIN_ID, 1, e.getMessage(), e);
 		}
 
 		try {
diff --git a/bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF
index 59a63aa..96475fa 100644
--- a/bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.team.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.team.ui; singleton:=true
-Bundle-Version: 3.3.1.qualifier
+Bundle-Version: 3.3.2.qualifier
 Bundle-Activator: org.eclipse.team.internal.ui.TeamUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/LineComparator.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/LineComparator.java
index 6128366..0a0b7b0 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/LineComparator.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/LineComparator.java
@@ -68,7 +68,7 @@
     	
     }
     
-    public static LineComparator create(IStorage storage, String outputEncoding) throws CoreException, UnsupportedEncodingException {
+    public static LineComparator create(IStorage storage, String outputEncoding) throws CoreException, IOException {
     	InputStream is = new BufferedInputStream(storage.getContents());
     	try {
 			String encoding = getEncoding(storage, outputEncoding);
@@ -92,17 +92,14 @@
 		return outputEncoding;
 	}
 	
-    public LineComparator(InputStream is, String encoding) throws UnsupportedEncodingException {
+    public LineComparator(InputStream is, String encoding) throws IOException {
         
         TrailingLineFeedDetector trailingLineFeedDetector = new TrailingLineFeedDetector(is);
 		BufferedReader br = new BufferedReader(new InputStreamReader(trailingLineFeedDetector, encoding));
         String line;
         ArrayList ar = new ArrayList();
-        try {
-            while ((line = br.readLine()) != null)
-                ar.add(line);
-        } catch (IOException e) {
-        		// silently ignored
+        while ((line = br.readLine()) != null) {
+            ar.add(line);
         }
         try {
             is.close();
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/TextStorageMerger.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/TextStorageMerger.java
index 24a9637..7f8af09 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/TextStorageMerger.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/TextStorageMerger.java
@@ -34,6 +34,8 @@
 			o= LineComparator.create(other,outputEncoding);
 		} catch (UnsupportedEncodingException e) {
 			throw new CoreException (new Status(IStatus.ERROR, CompareUI.PLUGIN_ID, UNSUPPORTED_ENCODING, TeamUIMessages.TextAutoMerge_inputEncodingError, e));
+		} catch (IOException e) {
+			throw new CoreException (new Status(IStatus.ERROR, CompareUI.PLUGIN_ID, INTERNAL_ERROR, e.getMessage(), e));
 		}
 
 		try {