From 4faa7314a42ff780056e3f19327be887221dcedc Mon Sep 17 00:00:00 2001 From: Arnaud Fabre Date: Sat, 29 Jun 2013 22:41:27 +0200 Subject: [PATCH] PrettyFormatter: Fix ArrayIndexOutOfBoundException with CRLF files. Change I6d82ce322d401743a8de5ab8090b2adc43a909f5 added a workaround for a bug in prettify, by temporarily adding a space before each \n character. For files with CRLF line endings, this means replacing "\r\n" by "\r\n", which prettify sees as two lines. This leads to a crash since Gerrit expects a consistent number of lines even after prettify. When Show Line Endings is active, the issue does not appear since \r are replaced with a specific markup, without any actual \r. Change-Id: I345e332225e449c6f26871476f1a07e67458da59 --- .../com/google/gerrit/prettify/common/PrettyFormatter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gerrit-prettify/src/main/java/com/google/gerrit/prettify/common/PrettyFormatter.java b/gerrit-prettify/src/main/java/com/google/gerrit/prettify/common/PrettyFormatter.java index 511b056c86..d07a34da79 100644 --- a/gerrit-prettify/src/main/java/com/google/gerrit/prettify/common/PrettyFormatter.java +++ b/gerrit-prettify/src/main/java/com/google/gerrit/prettify/common/PrettyFormatter.java @@ -145,9 +145,9 @@ public abstract class PrettyFormatter implements SparseHtmlFile { // Drop any '\r' to avoid this problem. html = html.replace("\r\n", "\n"); - html = html.replace("\n", " \n"); + html = html.replaceAll("(\r)?\n", " $1\n"); html = prettify(html, getFileType()); - html = html.replace(" \n", "\n"); + html = html.replaceAll(" (\r)?\n", "$1\n"); } else { html = expandTabs(html); }