We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 79e0f87 commit 9ce9dfdCopy full SHA for 9ce9dfd
src/interfaces/ecpg/preproc/output.c
@@ -95,9 +95,22 @@ hashline_number(void)
95
#endif
96
)
97
{
98
- char *line = mm_alloc(strlen("\n#line %d \"%s\"\n") + sizeof(int) * CHAR_BIT * 10 / 3 + strlen(input_filename));
99
-
100
- sprintf(line, "\n#line %d \"%s\"\n", yylineno, 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);
+ char *src,
101
+ *dest;
102
+
103
+ sprintf(line, "\n#line %d \"", yylineno);
104
+ src = input_filename;
105
+ dest = line + strlen(line);
106
+ while (*src)
107
+ {
108
+ if (*src == '\\')
109
+ *dest++ = '\\';
110
+ *dest++ = *src++;
111
+ }
112
+ *dest = '\0';
113
+ strcat(dest, "\"\n");
114
115
return line;
116
}
0 commit comments