X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perly.c;h=2b5108fac1666131456cb5eabac4d1935ba65a4f;hb=a6c71b5b9462db13c7bb2cd263cee5995315784c;hp=64ad3b5582645811914f9e4a5be44f7fb3404dd7;hpb=e1f15930cb6cb2f68ab17efdb7c081df813554a9;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perly.c b/perly.c index 64ad3b5..2b5108f 100644 --- a/perly.c +++ b/perly.c @@ -1386,6 +1386,9 @@ yyparse() #endif struct ysv *ysave; +#ifdef USE_ITHREADS + ENTER; /* force yydestruct() before we return */ +#endif New(73, ysave, 1, struct ysv); SAVEDESTRUCTOR_X(yydestruct, ysave); ysave->oldyydebug = yydebug; @@ -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