mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
diagnostics: fix invalid error message indentation
https://lists.gnu.org/archive/html/bison-patches/2019-08/msg00007.html When Bison is started with a flag that suppresses warning messages, the error_message() function can produce a few gigabytes of indentation because of a dangling pointer. * src/complain.c (error_message): Don't reset indent_ptr here, but... (complain_indent): here. * tests/diagnostics.at (Indentation with message suppression): Check this case.
This commit is contained in:
committed by
Akim Demaille
parent
47262c36bb
commit
e63811dd86
4
NEWS
4
NEWS
@@ -2,6 +2,10 @@ GNU Bison NEWS
|
|||||||
|
|
||||||
* Noteworthy changes in release ?.? (????-??-??) [?]
|
* Noteworthy changes in release ?.? (????-??-??) [?]
|
||||||
|
|
||||||
|
** Bug fixes
|
||||||
|
|
||||||
|
In some cases, when warnings are disabled, bison could emit tons of white
|
||||||
|
spaces as diagnostics.
|
||||||
|
|
||||||
* Noteworthy changes in release 3.4.1 (2019-05-22) [stable]
|
* Noteworthy changes in release 3.4.1 (2019-05-22) [stable]
|
||||||
|
|
||||||
|
|||||||
1
THANKS
1
THANKS
@@ -95,6 +95,7 @@ Keith Browne kbrowne@legato.com
|
|||||||
Ken Moffat zarniwhoop@ntlworld.com
|
Ken Moffat zarniwhoop@ntlworld.com
|
||||||
Kiyoshi Kanazawa yoi_no_myoujou@yahoo.co.jp
|
Kiyoshi Kanazawa yoi_no_myoujou@yahoo.co.jp
|
||||||
Laurent Mascherpa laurent.mascherpa@epita.fr
|
Laurent Mascherpa laurent.mascherpa@epita.fr
|
||||||
|
László Várady laszlo.varady93@gmail.com
|
||||||
Lie Yan lie.yan@kaust.edu.sa
|
Lie Yan lie.yan@kaust.edu.sa
|
||||||
Magnus Fromreide magfr@lysator.liu.se
|
Magnus Fromreide magfr@lysator.liu.se
|
||||||
Marc Autret autret_m@epita.fr
|
Marc Autret autret_m@epita.fr
|
||||||
|
|||||||
@@ -416,7 +416,6 @@ error_message (const location *loc, warnings flags, severity sever,
|
|||||||
*indent_ptr = pos;
|
*indent_ptr = pos;
|
||||||
else if (*indent_ptr > pos)
|
else if (*indent_ptr > pos)
|
||||||
fprintf (stderr, "%*s", *indent_ptr - pos, "");
|
fprintf (stderr, "%*s", *indent_ptr - pos, "");
|
||||||
indent_ptr = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* style = severity_style (sever);
|
const char* style = severity_style (sever);
|
||||||
@@ -487,6 +486,7 @@ complain_indent (location const *loc, warnings flags, unsigned *indent,
|
|||||||
va_start (args, message);
|
va_start (args, message);
|
||||||
complains (loc, flags, message, args);
|
complains (loc, flags, message, args);
|
||||||
va_end (args);
|
va_end (args);
|
||||||
|
indent_ptr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -242,3 +242,33 @@ input.y: <warning>warning:</warning> fix-its can be applied. Rerun with option
|
|||||||
|
|
||||||
|
|
||||||
m4_popdef([AT_TEST])
|
m4_popdef([AT_TEST])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## -------------------------------------- ##
|
||||||
|
## Indentation with message suppression. ##
|
||||||
|
## -------------------------------------- ##
|
||||||
|
|
||||||
|
AT_SETUP([[Indentation with message suppression]])
|
||||||
|
|
||||||
|
# https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00002.html
|
||||||
|
|
||||||
|
AT_DATA([[input.y]],
|
||||||
|
[[%define api.pure
|
||||||
|
%pure-parser
|
||||||
|
%error-verbose
|
||||||
|
%%
|
||||||
|
exp : '0'
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_BISON_CHECK([[-fcaret -Wno-other input.y]], [0], [],
|
||||||
|
[[input.y:2.1-12: warning: deprecated directive, use '%define api.pure' [-Wdeprecated]
|
||||||
|
2 | %pure-parser
|
||||||
|
| ^~~~~~~~~~~~
|
||||||
|
input.y:3.1-14: warning: deprecated directive, use '%define parse.error verbose' [-Wdeprecated]
|
||||||
|
3 | %error-verbose
|
||||||
|
| ^~~~~~~~~~~~~~
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_CLEANUP
|
||||||
|
|||||||
Reference in New Issue
Block a user