Quellcode durchsuchen

LibDiff: Flush leftover hunks at the end

This change makes sure that we arrive at the end of the "DP-matrix" and
flush any leftover hunks to get a complete diff result.
Itamar vor 3 Jahren
Ursprung
Commit
4737fc2485
1 geänderte Dateien mit 10 neuen und 0 gelöschten Zeilen
  1. 10 0
      Userland/Libraries/LibDiff/Generator.cpp

+ 10 - 0
Userland/Libraries/LibDiff/Generator.cpp

@@ -106,6 +106,16 @@ Vector<Hunk> from_text(StringView old_text, StringView new_text)
             flush_hunk();
         }
     }
+
+    while (i < old_lines.size() && new_lines.size() > 0) {
+        update_hunk(i, new_lines.size() - 1, Direction::Right); // Remove a line
+        ++i;
+    }
+    while (j < new_lines.size() && old_lines.size() > 0) {
+        update_hunk(old_lines.size() - 1, j, Direction::Down); // Add a line
+        ++j;
+    }
+
     flush_hunk();
 
     return hunks;