diff options
Diffstat (limited to 'gcc/cppmain.c')
-rw-r--r-- | gcc/cppmain.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/cppmain.c b/gcc/cppmain.c index 503fa30..b8757c7 100644 --- a/gcc/cppmain.c +++ b/gcc/cppmain.c @@ -321,8 +321,17 @@ print_line (map, line, special_flags) print.line = line; if (! options->no_line_commands) { + size_t to_file_len = strlen (map->to_file); + unsigned char *to_file_quoted = alloca (to_file_len * 4 + 1); + unsigned char *p; + + /* cpp_quote_string does not nul-terminate, so we have to do it + ourselves. */ + p = cpp_quote_string (to_file_quoted, + (unsigned char *)map->to_file, to_file_len); + *p = '\0'; fprintf (print.outf, "# %u \"%s\"%s", - SOURCE_LINE (map, print.line), map->to_file, special_flags); + SOURCE_LINE (map, print.line), to_file_quoted, special_flags); if (map->sysp == 2) fputs (" 3 4", print.outf); |