diff --git a/src/plugins/diffeditor/diffeditorplugin.cpp b/src/plugins/diffeditor/diffeditorplugin.cpp
index b7661f511e78b3673cd151f0152a1658b23aca50..a8c2c46b64c0873a85fa781318c6518d1fb22014 100644
--- a/src/plugins/diffeditor/diffeditorplugin.cpp
+++ b/src/plugins/diffeditor/diffeditorplugin.cpp
@@ -453,7 +453,22 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
                                 "+}\n"
                                 "+\n"
                                 " } // namespace Internal\n"
-                                " } // namespace DiffEditor\n");
+                                " } // namespace DiffEditor\n"
+                                "diff --git a/new b/new\n"
+                                "new file mode 100644\n"
+                                "index 0000000..257cc56\n"
+                                "--- /dev/null\n"
+                                "+++ b/new\n"
+                                "@@ -0,0 +1 @@\n"
+                                "+foo\n"
+                                "diff --git a/deleted b/deleted\n"
+                                "deleted file mode 100644\n"
+                                "index 257cc56..0000000\n"
+                                "--- a/deleted\n"
+                                "+++ /dev/null\n"
+                                "@@ -1 +0,0 @@\n"
+                                "-foo\n"
+                                  );
 
     FileData fileData1;
     fileData1.leftFileInfo = DiffFileInfo(QLatin1String("src/plugins/diffeditor/diffeditor.cpp"),
@@ -510,9 +525,34 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
     chunkData2.rows = rows2;
     fileData2.chunks.append(chunkData2);
 
+    FileData fileData3;
+    fileData3.leftFileInfo = DiffFileInfo(QLatin1String("new"), QLatin1String("0000000"));
+    fileData3.rightFileInfo = DiffFileInfo(QLatin1String("new"), QLatin1String("257cc56"));
+    ChunkData chunkData3;
+    chunkData3.leftStartingLineNumber = -1;
+    chunkData3.rightStartingLineNumber = 0;
+    QList<RowData> rows3;
+    rows3.append(RowData(TextLineData::Separator, TextLineData(QLatin1String("foo"))));
+    TextLineData textLineData3(TextLineData::TextLine);
+    rows3.append(RowData(TextLineData::Separator, textLineData3));
+    chunkData3.rows = rows3;
+    fileData3.chunks.append(chunkData3);
+
+    FileData fileData4;
+    fileData4.leftFileInfo = DiffFileInfo(QLatin1String("deleted"), QLatin1String("257cc56"));
+    fileData4.rightFileInfo = DiffFileInfo(QLatin1String("deleted"), QLatin1String("0000000"));
+    ChunkData chunkData4;
+    chunkData4.leftStartingLineNumber = 0;
+    chunkData4.rightStartingLineNumber = -1;
+    QList<RowData> rows4;
+    rows4.append(RowData(TextLineData(QLatin1String("foo")), TextLineData::Separator));
+    TextLineData textLineData4(TextLineData::TextLine);
+    rows4.append(RowData(textLineData4, TextLineData::Separator));
+    chunkData4.rows = rows4;
+    fileData4.chunks.append(chunkData4);
+
     QList<FileData> fileDataList;
-    fileDataList.append(fileData1);
-    fileDataList.append(fileData2);
+    fileDataList << fileData1 << fileData2 << fileData3 << fileData4;
 
     QTest::newRow("Git patch") << patch
                                << fileDataList;
diff --git a/src/plugins/diffeditor/diffutils.cpp b/src/plugins/diffeditor/diffutils.cpp
index 728c844cd98b087cdcfad8cbcbe20916b07ec741..06e3c2c5781bb264eadd39de52d657acc7ba5d8f 100644
--- a/src/plugins/diffeditor/diffutils.cpp
+++ b/src/plugins/diffeditor/diffutils.cpp
@@ -613,8 +613,8 @@ static QList<ChunkData> readChunks(const QString &patch,
     const QRegExp chunkRegExp(QLatin1String(
                                   // beginning of the line
                               "((?:\\n|^)"
-                                  // @@ -leftPos,leftCount +rightPos,rightCount @@
-                              "@@ -(\\d+),\\d+ \\+(\\d+),\\d+ @@"
+                                  // @@ -leftPos[,leftCount] +rightPos[,rightCount] @@
+                              "@@ -(\\d+)(?:,\\d+)? \\+(\\d+)(?:,\\d+)? @@"
                                   // optional hint (e.g. function name)
                               "(?:\\ +[^\\n]*)?"
                                   // end of line (need to be followed by text line)