- || strcmp (logical_input_file, fname)))
- {
- logical_input_file = fname;
- return 1;
- }
- else
- return 0;
+ || filename_cmp (logical_input_file, fname)))
+ logical_input_file = fname;
+
+ /* When encountering file or line changes inside a macro, arrange for
+ bump_line_counters() to henceforth increment the logical line number
+ again, just like it does when expanding repeats. See as_where() for
+ why changing file or line alone doesn't alter expansion mode. */
+ if (from_sb_expansion == expanding_macro
+ && logical_input_file != NULL
+ && logical_input_line != -1u)
+ from_sb_expansion = expanding_repeat;