Index: data/push.c =================================================================== RCS file: /sources/bison/bison/data/push.c,v retrieving revision 1.12 diff -u -r1.12 push.c --- data/push.c 12 Dec 2006 06:47:39 -0000 1.12 +++ data/push.c 13 Dec 2006 23:11:37 -0000 @@ -153,7 +153,8 @@ [/* Substitute the variable and function names. */ #define yyparse b4_prefix[]parse ]b4_push_if([#define yypush_parse b4_prefix[]push_parse -#define yypstate_init b4_prefix[]pstate_init +#define yypstate_new b4_prefix[]pstate_new +#define yypstate_delete b4_prefix[]pstate_delete #define yypstate b4_prefix[]pstate])[ #define yylex b4_prefix[]lex #define yyerror b4_prefix[]error @@ -970,12 +971,13 @@ ]b4_push_if([ struct yypstate; enum { YYPUSH_MORE = 4 }; -]b4_c_function_decl([yypstate_init], [struct yypstate *], [[void], []])[ +]b4_c_function_decl([yypstate_new], [struct yypstate *], [[void], []])[ +]b4_c_function_decl([yypstate_delete], [void], [[struct yypstate *yyps], [yyps]])[ ]b4_c_function_decl([yypush_parse], [int], [[struct yypstate *yyps], [yyps]], [[int yynchar], [yynchar]], - [[YYSTYPE *yynlval], [yynlval]] - b4_locations_if([,[[YYLTYPE *yynlloc], [yynlloc]]]))[ + [[YYSTYPE const * yynlval], [yynlval]] + b4_locations_if([,[[YYLTYPE const * yynlloc], [yynlloc]]]))[ ])[ ]m4_divert_push([KILL])# ======================== M4 code. @@ -1047,8 +1049,7 @@ }; /* Initialize the parser data structure. */ -struct yypstate* -yypstate_init (void) +]b4_c_function_def([yypstate_new], [struct yypstate*])[ { struct yypstate *yyps = (struct yypstate *) malloc (sizeof *yyps); yyps->yystate = 0; @@ -1071,7 +1072,13 @@ ]b4_locations_if([ yyps->yylsp = yyps->yyls;])[ return yyps; -}]) +} + +]b4_c_function_def([yypstate_delete], [void], [[struct yypstate *yyps],[yyps]])[ +{ + free (yyps); +} +]) m4_divert_pop([KILL])dnl# ====================== End of M4 code. b4_push_if([],[b4_pure_if([], @@ -1085,8 +1092,8 @@ b4_push_if([ b4_c_function_def([yypush_parse], [int], [[struct yypstate *yyps], [yyps]], - [[int yynchar], [yynchar]], [[YYSTYPE *yynlval], [yynlval]] - b4_locations_if([,[[YYLTYPE *yynlloc], [yynlloc]]]))],[ + [[int yynchar], [yynchar]], [[YYSTYPE const * yynlval], [yynlval]] + b4_locations_if([,[[YYLTYPE const * yynlloc], [yynlloc]]]))],[ #ifdef YYPARSE_PARAM b4_c_function_def([yyparse], [int], [[void *YYPARSE_PARAM], [YYPARSE_PARAM]]) #else /* ! YYPARSE_PARAM */ @@ -1679,12 +1686,13 @@ #endif ]b4_push_if([struct ]b4_prefix[pstate; -]b4_c_function_decl([]b4_prefix[pstate_init], [struct ]b4_prefix[pstate *], [[void], []])[ +]b4_c_function_decl([]b4_prefix[pstate_new], [struct ]b4_prefix[pstate *], [[void], []])[ +]b4_c_function_decl([]b4_prefix[pstate_delete], [void], [[struct ]b4_prefix[pstate *yyps],[yyps]])[ ]b4_c_function_decl([]b4_prefix[push_parse], [int], [[struct ]b4_prefix[pstate *]b4_prefix[pstate], []b4_prefix[pstate]], [[int yynchar], [yynchar]], - [[YYSTYPE *yynlval], [yynlval]] - b4_locations_if([,[[YYLTYPE *yynlloc], [yynlloc]]]))[ + [[YYSTYPE const * yynlval], [yynlval]] + b4_locations_if([,[[YYLTYPE const * yynlloc], [yynlloc]]]))[ enum { YYPUSH_MORE = 4 };])[ ]b4_pure_if([], [extern YYLTYPE b4_prefix[]lloc;]) Index: tests/calc.at =================================================================== RCS file: /sources/bison/bison/tests/calc.at,v retrieving revision 1.96 diff -u -r1.96 calc.at --- tests/calc.at 8 Dec 2006 22:36:33 -0000 1.96 +++ tests/calc.at 13 Dec 2006 23:11:37 -0000 @@ -338,13 +338,13 @@ [ yydebug = 1;])])[ ]AT_PUSH_IF([ { - struct yypstate *pstate = yypstate_init (); + struct yypstate *pstate = yypstate_new (); YYSTYPE my_lval; ]AT_LOCATION_IF([YYLTYPE my_lloc;])[ do { status = yypush_parse (pstate, yylex (&my_lval]AT_LOCATION_IF([[, &my_lloc]])[), &my_lval]AT_LOCATION_IF([[, &my_lloc]])[); } while (status == YYPUSH_MORE); - free (pstate); + yypstate_delete (pstate); }],[ status = yyparse (]AT_PARAM_IF([[&result, &count]])[);])[ fclose (input);