X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perly_c.diff;h=20990601d75e8b0cee2cc392f4e394f005617c63;hb=3f766ba313fac08361667b38ebc1ca30388db1c3;hp=f42a10c9efd4b19b9b58e4b875a5faa8e2f36477;hpb=c76ac1ee16c5c9591d8ffad5a0651b7f81738b68;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perly_c.diff b/perly_c.diff index f42a10c..2099060 100644 --- a/perly_c.diff +++ b/perly_c.diff @@ -1,7 +1,7 @@ *** y.tab.c.orig Thu Aug 26 22:31:26 1999 --- y.tab.c Thu Aug 26 22:32:22 1999 *************** -*** 1447,1456 **** +*** 1448,1457 **** yyparse() { register int yym, yyn, yystate; @@ -12,7 +12,7 @@ if (yys = getenv("YYDEBUG")) { yyn = *yys; ---- 1447,1473 ---- +--- 1448,1477 ---- yyparse() { register int yym, yyn, yystate; @@ -27,8 +27,11 @@ ! #endif + struct ysv *ysave; ++ #ifdef USE_ITHREADS ++ ENTER; /* force yydestruct() before we return */ ++ #endif + New(73, ysave, 1, struct ysv); -+ SAVEDESTRUCTOR(yydestruct, ysave); ++ SAVEDESTRUCTOR_X(yydestruct, ysave); + ysave->oldyydebug = yydebug; + ysave->oldyynerrs = yynerrs; + ysave->oldyyerrflag = yyerrflag; @@ -41,8 +44,8 @@ { yyn = *yys; *************** -*** 1463,1468 **** ---- 1480,1495 ---- +*** 1464,1469 **** +--- 1484,1499 ---- yyerrflag = 0; yychar = (-1); @@ -60,7 +63,7 @@ yyvsp = yyvs; *yyssp = yystate = 0; *************** -*** 1493,1499 **** +*** 1494,1500 **** #endif if (yyssp >= yyss + yystacksize - 1) { @@ -68,7 +71,7 @@ } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; ---- 1520,1538 ---- +--- 1524,1542 ---- #endif if (yyssp >= yyss + yystacksize - 1) { @@ -89,7 +92,7 @@ *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; *************** -*** 1534,1540 **** +*** 1535,1541 **** #endif if (yyssp >= yyss + yystacksize - 1) { @@ -97,7 +100,7 @@ } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; ---- 1573,1591 ---- +--- 1577,1595 ---- #endif if (yyssp >= yyss + yystacksize - 1) { @@ -118,7 +121,7 @@ *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; *************** -*** 2473,2487 **** +*** 2481,2495 **** #endif if (yyssp >= yyss + yystacksize - 1) { @@ -134,7 +137,7 @@ yyaccept: ! return (0); } ---- 2524,2550 ---- +--- 2535,2583 ---- #endif if (yyssp >= yyss + yystacksize - 1) { @@ -160,5 +163,27 @@ yyabort: ! retval = 1; yyaccept: +! #ifdef USE_ITHREADS +! LEAVE; /* force yydestruct() before we return */ +! #endif ! return retval; +! } +! +! #ifdef PERL_OBJECT +! #include "XSUB.h" +! #endif +! +! static void +! yydestruct(pTHXo_ void *ptr) +! { +! struct ysv* ysave = (struct ysv*)ptr; +! if (ysave->yyss) Safefree(ysave->yyss); +! if (ysave->yyvs) Safefree(ysave->yyvs); +! yydebug = ysave->oldyydebug; +! yynerrs = ysave->oldyynerrs; +! yyerrflag = ysave->oldyyerrflag; +! yychar = ysave->oldyychar; +! yyval = ysave->oldyyval; +! yylval = ysave->oldyylval; +! Safefree(ysave); }