Robert Anisko <anisko_r@lrde.epita.fr>
* data/lalr1.cc (parse::yyerrlab1): When popping the stack, stop
when the stacks contain one element, as the loop would otherwise
free the last state, and then use the top state (the one we just
popped). This means that the initial elements will not be freed
explicitly, as is the case in yacc.c; it is not a problem, as
these elements have fake values.
+2003-01-13 Akim Demaille <akim@epita.fr>,
+ Quoc Peyrot <chojin@lrde.epita.fr>,
+ Robert Anisko <anisko_r@lrde.epita.fr>
+
+ * data/lalr1.cc (parse::yyerrlab1): When popping the stack, stop
+ when the stacks contain one element, as the loop would otherwise
+ free the last state, and then use the top state (the one we just
+ popped). This means that the initial elements will not be freed
+ explicitly, as is the case in yacc.c; it is not a problem, as
+ these elements have fake values.
+
2003-01-11 Paul Eggert <eggert@twinsun.com>
* NEWS: %expect-violations are now just warnings, reverting
2003-01-11 Paul Eggert <eggert@twinsun.com>
* NEWS: %expect-violations are now just warnings, reverting
int nerrs = 0;
int errstatus = 0;
int nerrs = 0;
int errstatus = 0;
- /* Initialize stack. */
+ /* Initialize the stacks. The initial state will be pushed in
+ yynewstate, since the latter expects the semantical and the
+ location values to have been already stored, initialize these
+ stacks with a primary value. */
state_stack_ = StateStack (0);
semantic_stack_ = SemanticStack (1);
location_stack_ = LocationStack (1);
state_stack_ = StateStack (0);
semantic_stack_ = SemanticStack (1);
location_stack_ = LocationStack (1);
}
/* Pop the current state because it cannot handle the error token. */
}
/* Pop the current state because it cannot handle the error token. */
- if (!state_stack_.height ())
+ if (state_stack_.height () == 1)
goto yyabortlab;
#if YYDEBUG
goto yyabortlab;
#if YYDEBUG