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<space>\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
This commit is contained in:
Arnaud Fabre
2013-06-29 22:41:27 +02:00
parent dc57f02920
commit 4faa7314a4

View File

@@ -145,9 +145,9 @@ public abstract class PrettyFormatter implements SparseHtmlFile {
// Drop any '\r' to avoid this problem.
html = html.replace("\r</span>\n", "</span>\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);
}