Bug 188898 [Apply Patch] Internal Error written to .log when applying patch
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
index 374c5d8..b9781a6 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
@@ -280,7 +280,7 @@
*/
public static List load(IStorage file, boolean create) {
List lines= null;
- if (!create && file != null) {
+ if (!create && file != null && exists(file)) {
// read current contents
String charset = Utilities.getCharset(file);
InputStream is= null;
@@ -315,6 +315,13 @@
return lines;
}
+ private static boolean exists(IStorage file) {
+ if (file instanceof IFile) {
+ return ((IFile) file).exists();
+ }
+ return true;
+ }
+
private static List readLines(BufferedReader reader) {
List lines;
LineReader lr= new LineReader(reader);
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
index 374c5d8..b9781a6 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
@@ -280,7 +280,7 @@
*/
public static List load(IStorage file, boolean create) {
List lines= null;
- if (!create && file != null) {
+ if (!create && file != null && exists(file)) {
// read current contents
String charset = Utilities.getCharset(file);
InputStream is= null;
@@ -315,6 +315,13 @@
return lines;
}
+ private static boolean exists(IStorage file) {
+ if (file instanceof IFile) {
+ return ((IFile) file).exists();
+ }
+ return true;
+ }
+
private static List readLines(BufferedReader reader) {
List lines;
LineReader lr= new LineReader(reader);