mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-19 01:03:04 +00:00
api.prefix: also rename YYDEBUG.
The testsuite in master has shown weird errors for the "Mulitple Parsers" tests: the caller of p5.parse() received some apparently random value, while tracing p5.parse() showed that the function was consistently returning 0. It happens when mixing several parser headers, some generated without %debug, others with. In particular the C++ parser was generated with %debug, i.e., with: #ifndef YYDEBUG # define YYDEBUG 1 #endif and compiled separatedly. Yet, its header was included after the one of another parser, this time without %debug, i.e., with #ifndef YYDEBUG # define YYDEBUG 0 #endif in its header. As a result, the parser was compiled with YYDEBUG set, but its header was used without. Since the layout of the objects are then completely different, boom. Therefore, do not change the value of YYDEBUG. Rather, use it as a default value for <API.PREFIX>DEBUG. * data/c.m4 (b4_YYDEBUG_define): New. (b4_declare_yydebug): Rename as... (b4_yydebug_declare): this, for consistency. * data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Use it. * NEWS: Document it.
This commit is contained in:
17
NEWS
17
NEWS
@@ -94,10 +94,19 @@ GNU Bison NEWS
|
||||
# define BAR_FOO_H # define BAR_FOO_H
|
||||
|
||||
/* Enabling traces. */ /* Enabling traces. */
|
||||
# ifndef YYDEBUG # ifndef YYDEBUG
|
||||
# define YYDEBUG 0 # define YYDEBUG 0
|
||||
# endif # endif
|
||||
# if YYDEBUG # if YYDEBUG
|
||||
# ifndef YYDEBUG | # ifndef BAR_DEBUG
|
||||
> # if defined YYDEBUG
|
||||
> # if YYDEBUG
|
||||
> # define BAR_DEBUG 1
|
||||
> # else
|
||||
> # define BAR_DEBUG 0
|
||||
> # endif
|
||||
> # else
|
||||
# define YYDEBUG 0 | # define BAR_DEBUG 0
|
||||
> # endif
|
||||
# endif | # endif
|
||||
|
||||
# if YYDEBUG | # if BAR_DEBUG
|
||||
extern int bar_debug; extern int bar_debug;
|
||||
# endif # endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user