diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/diagnostic-show-locus.c | 11 |
2 files changed, 15 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f2699e0..981ae01 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2018-01-27 Bernd Edlinger <bernd.edlinger@hotmail.de> + + PR diagnostic/84034 + * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace): + Handle CR like TAB. + (layout::print_source_line): Likewise. + (test_get_line_width_without_trailing_whitespace): Add test cases. + 2018-01-27 Jakub Jelinek <jakub@redhat.com> PR middle-end/84040 diff --git a/gcc/diagnostic-show-locus.c b/gcc/diagnostic-show-locus.c index cce3ef3..5eee3cc 100644 --- a/gcc/diagnostic-show-locus.c +++ b/gcc/diagnostic-show-locus.c @@ -639,7 +639,7 @@ get_line_width_without_trailing_whitespace (const char *line, int line_width) while (result > 0) { char ch = line[result - 1]; - if (ch == ' ' || ch == '\t') + if (ch == ' ' || ch == '\t' || ch == '\r') result--; else break; @@ -648,7 +648,8 @@ get_line_width_without_trailing_whitespace (const char *line, int line_width) gcc_assert (result <= line_width); gcc_assert (result == 0 || (line[result - 1] != ' ' - && line[result -1] != '\t')); + && line[result -1] != '\t' + && line[result -1] != '\r')); return result; } @@ -673,9 +674,11 @@ test_get_line_width_without_trailing_whitespace () assert_eq ("", 0); assert_eq (" ", 0); assert_eq ("\t", 0); + assert_eq ("\r", 0); assert_eq ("hello world", 11); assert_eq ("hello world ", 11); assert_eq ("hello world \t\t ", 11); + assert_eq ("hello world\r", 11); } #endif /* #if CHECKING_P */ @@ -1176,8 +1179,8 @@ layout::print_source_line (int row, const char *line, int line_width, else m_colorizer.set_normal_text (); } - char c = *line == '\t' ? ' ' : *line; - if (c == '\0') + char c = *line; + if (c == '\0' || c == '\t' || c == '\r') c = ' '; if (c != ' ') { |