gdb: Fix skip of `\r` before `\n` in source output
authorAndrew Burgess <andrew.burgess@embecosm.com>
Sun, 6 Jan 2019 23:31:45 +0000 (23:31 +0000)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Tue, 8 Jan 2019 12:19:40 +0000 (12:19 +0000)
In this commit:

  commit 62f29fda90cf1d5a1899f57ef78452471c707fd6
  Date:   Tue Oct 9 22:21:05 2018 -0600

      Highlight source code using GNU Source Highlight

A bug was introduced such that when displaying source code from a file
with lines `\r\n` GDB would print `^M` at the end of each line.

This caused a regression on the test gdb.fortran/nested-funcs.exp,
which happens to have `\r\n` line endings.

gdb/ChangeLog:

* source.c (print_source_lines_base): Fix skip of '\r' if next
character is '\n'.

gdb/ChangeLog
gdb/source.c

index 8230afc88181b0ecad9465c756b3c4478744e16f..3ea75762f97adaabc674a79b299d95b6870e49ca 100644 (file)
@@ -1,3 +1,8 @@
+2019-01-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * source.c (print_source_lines_base): Fix skip of '\r' if next
+       character is '\n'.
+
 2019-01-06  Tom Tromey  <tom@tromey.com>
 
        * c-exp.y (struct c_parse_state) <macro_original_text,
index ad6c6466b4470dcfa410bdf11a39027acfe4c856..e77789c0dbab8b9d0d7a118e44c91d33a065c2ba 100644 (file)
@@ -1379,12 +1379,7 @@ print_source_lines_base (struct symtab *s, int line, int stopline,
          else if (c == '\r')
            {
              /* Skip a \r character, but only before a \n.  */
-             if (iter[1] == '\n')
-               {
-                 ++iter;
-                 c = '\n';
-               }
-             else
+             if (*iter != '\n')
                printf_filtered ("^%c", c + 0100);
            }
          else