[Bug c/52952] Wformat location info is bad (wrong column number)
bernd.edlinger at hotmail dot de
gcc-bugzilla@gcc.gnu.org
Fri Aug 19 21:16:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52952
Bernd Edlinger <bernd.edlinger at hotmail dot de> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bernd.edlinger at hotmail dot de
--- Comment #46 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
(In reply to David Malcolm from comment #45)
> trunk/gcc/testsuite/gcc.dg/cpp/pr66415-1.c
David, this test case does fail because the caret is not always shown in
column 71.
I've got it once, but and when I tried to repeat this test alone it works.
It seems to depend if stderr is a tty (isatty(2) != 0)
I think the problem is in diagnostics.c
diagnostic_set_caret_max_width (diagnostic_context *context, int value)
{
/* One minus to account for the leading empty space. */
value = value ? value - 1
: (isatty (fileno (pp_buffer (context->printer)->stream))
? get_terminal_width () - 1: INT_MAX);
and:
get_terminal_width (void)
{
const char * s = getenv ("COLUMNS");
if (s != NULL) {
int n = atoi (s);
if (n > 0)
return n;
}
#ifdef TIOCGWINSZ
struct winsize w;
w.ws_col = 0;
if (ioctl (0, TIOCGWINSZ, &w) == 0 && w.ws_col > 0)
return w.ws_col;
#endif
return INT_MAX;
}
I think it depends on the terminal window, where I start the
make check, it is often a COLUMNS=80 then maybe the test will
fail, because the output is squeezed into 80 column, but
if COLUMNS=120 the test will pass.
What do you think?
More information about the Gcc-bugs
mailing list