X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perly.c;h=2b5108fac1666131456cb5eabac4d1935ba65a4f;hb=ce08f86c8b1d404b3d9fec75a102b8cd65f8766a;hp=e1458d8ed335c10f1549022ee446d6f5036872d1;hpb=09bef84370e90d727656ea11ba5ee8be80e361d3;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perly.c b/perly.c index e1458d8..2b5108f 100644 --- a/perly.c +++ b/perly.c @@ -1386,8 +1386,11 @@ yyparse() #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; @@ -1662,7 +1665,7 @@ case 21: break; case 22: #line 203 "perly.y" -{ yyval.opval = scope(yyvsp[0].opval); } +{ (yyvsp[0].opval)->op_flags |= OPf_PARENS; yyval.opval = scope(yyvsp[0].opval); } break; case 23: #line 205 "perly.y" @@ -1744,7 +1747,7 @@ case 35: break; case 37: #line 269 "perly.y" -{ (void)scan_num("1"); yyval.opval = yylval.opval; } +{ (void)scan_num("1", &yylval); yyval.opval = yylval.opval; } break; case 39: #line 274 "perly.y" @@ -1826,7 +1829,7 @@ case 59: #line 338 "perly.y" { STRLEN n_a; char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv,n_a); if (strEQ(name, "BEGIN") || strEQ(name, "END") - || strEQ(name, "INIT")) + || strEQ(name, "INIT") || strEQ(name, "CHECK")) CvSPECIAL_on(PL_compcv); yyval.opval = yyvsp[0].opval; } break; @@ -2477,11 +2480,13 @@ yyoverflow: yyabort: retval = 1; yyaccept: +#ifdef USE_ITHREADS + LEAVE; /* force yydestruct() before we return */ +#endif return retval; } #ifdef PERL_OBJECT -#define NO_XSLOCKS #include "XSUB.h" #endif