diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchListCacheImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchListCacheImpl.java index be4eaab5ce..341873ed28 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchListCacheImpl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchListCacheImpl.java @@ -246,9 +246,12 @@ public class PatchListCacheImpl implements PatchListCache { int bb = c.getBeginB(); int be = n.getEndB(); - wordEdits.set(j, new Edit(ab, ae, bb, be)); - wordEdits.remove(j + 1); - continue; + if (canCoalesce(a, c.getEndA(), n.getBeginA()) + && canCoalesce(b, c.getEndB(), n.getBeginB())) { + wordEdits.set(j, new Edit(ab, ae, bb, be)); + wordEdits.remove(j + 1); + continue; + } } j++; @@ -367,6 +370,15 @@ public class PatchListCacheImpl implements PatchListCache { return new PatchListEntry(fileHeader, edits); } + private static boolean canCoalesce(CharText a, int b, int e) { + while (b < e) { + if (a.charAt(b++) == '\n') { + return false; + } + } + return true; + } + private static int findLF(List edits, int j, CharText t, int b) { int lf = b; int limit = 0 < j ? edits.get(j - 1).getEndB() : 0;