Additional fix for bug 123787: [Patch] Apply Patch error handling
for invalid formats
diff --git a/bundles/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/PatchReader.java b/bundles/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/PatchReader.java
index 05b85ee..f4540e5 100644
--- a/bundles/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/PatchReader.java
+++ b/bundles/org.eclipse.compare.core/src/org/eclipse/compare/internal/core/patch/PatchReader.java
@@ -323,6 +323,12 @@
 							continue;
 						}
 						break;
+					case '#':
+						break;
+					case 'I':
+						if (line.indexOf("Index:") == 0) //$NON-NLS-1$
+							break;
+						//$FALL-THROUGH$
 					default:
 						throw new IOException("Invalid patch"); //$NON-NLS-1$
 				}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
index c68ed57..a8bbecc 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
@@ -251,6 +251,9 @@
 	 * Reads in the patch contents
 	 */
 	public void readInPatch(){
+		if (fPatchRead)
+			return;
+
 		WorkspacePatcher patcher= ((PatchWizard) getWizard()).getPatcher();
 		// Create a reader for the input
 		Reader reader= null;
@@ -450,6 +453,7 @@
 			public void modifyText(ModifyEvent e) {
 				clearErrorMessage();
 				fShowError= true;
+				fPatchRead = false;
 				updateWidgetEnablements();
 			}
 		});
@@ -476,6 +480,7 @@
 			public void modifyText(ModifyEvent e) {
 				clearErrorMessage();
 				fShowError = true;
+				fPatchRead = false;
 				updateWidgetEnablements();
 			}
 		});