From: Akim Demaille Date: Mon, 13 Jan 2003 15:42:31 +0000 (+0000) Subject: Quoc Peyrot , X-Git-Tag: BISON-2_0~427 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/3ae831b4137245b9f7015f45223ca9abf35f25c1?ds=sidebyside Quoc Peyrot , Robert Anisko * 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. --- diff --git a/ChangeLog b/ChangeLog index 33b038c2..15d9871d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2003-01-13 Akim Demaille , + Quoc Peyrot , + Robert Anisko + + * 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 * NEWS: %expect-violations are now just warnings, reverting diff --git a/data/lalr1.cc b/data/lalr1.cc index bab5e5f6..a2329e3a 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -302,7 +302,10 @@ yy::]b4_parser_class_name[::parse () 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); @@ -545,7 +548,7 @@ b4_syncline([@oline@], [@ofile@])[ } /* Pop the current state because it cannot handle the error token. */ - if (!state_stack_.height ()) + if (state_stack_.height () == 1) goto yyabortlab; #if YYDEBUG