Commit 9ce9dfdb authored by Michael Meskes's avatar Michael Meskes

Apploed patch by MauMau <maumau307@gmail.com> to escape filenames in #line statements.

parent 79e0f87a
...@@ -95,9 +95,22 @@ hashline_number(void) ...@@ -95,9 +95,22 @@ hashline_number(void)
#endif #endif
) )
{ {
char *line = mm_alloc(strlen("\n#line %d \"%s\"\n") + sizeof(int) * CHAR_BIT * 10 / 3 + strlen(input_filename)); /* "* 2" here is for escaping \s below */
char *line = mm_alloc(strlen("\n#line %d \"%s\"\n") + sizeof(int) * CHAR_BIT * 10 / 3 + strlen(input_filename) * 2);
sprintf(line, "\n#line %d \"%s\"\n", yylineno, input_filename); char *src,
*dest;
sprintf(line, "\n#line %d \"", yylineno);
src = input_filename;
dest = line + strlen(line);
while (*src)
{
if (*src == '\\')
*dest++ = '\\';
*dest++ = *src++;
}
*dest = '\0';
strcat(dest, "\"\n");
return line; return line;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment