diff options
author | Chris Maynard <Christopher.Maynard@GTECH.COM> | 2011-04-01 16:55:59 +0000 |
---|---|---|
committer | Chris Maynard <Christopher.Maynard@GTECH.COM> | 2011-04-01 16:55:59 +0000 |
commit | c236db55fe6da4a6824d02d8eda55ba7ad7f6574 (patch) | |
tree | 7cb5cc86b5588fdd9cec476478d14e7438ee5df8 /tools/lemon/lempar.c | |
parent | 2db46ad8d4a9fb3e83828a92adea7f6d6e439c61 (diff) |
Don't use pParser->yyidx as an index into pParser->yystack[] until after it is
verified that it is non-negative. Should resolve CID 619.
svn path=/trunk/; revision=36431
Diffstat (limited to 'tools/lemon/lempar.c')
-rw-r--r-- | tools/lemon/lempar.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/tools/lemon/lempar.c b/tools/lemon/lempar.c index 6ac188097c..72e5f6018e 100644 --- a/tools/lemon/lempar.c +++ b/tools/lemon/lempar.c @@ -327,11 +327,12 @@ static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){ */ static int yy_pop_parser_stack(yyParser *pParser){ YYCODETYPE yymajor; - yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; + yyStackEntry *yytos; if( pParser->yyidx<0 ) return 0; + yytos = &pParser->yystack[pParser->yyidx]; #ifndef NDEBUG - if( yyTraceFILE && pParser->yyidx>=0 ){ + if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sPopping %s\n", yyTracePrompt, yyTokenName[yytos->major]); |