This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
More author updates.
[perl5.git] / perly.c
diff --git a/perly.c b/perly.c
index e1458d8..d03d3de 100644 (file)
--- 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"
@@ -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