Fix for 20010219.013, "perlio perl -we tell goes SEGV".
[p5sagit/p5-mst-13.2.git] / perly_c.diff
index 7ade2f3..2099060 100644 (file)
@@ -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;
 ! #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)
                   {
                   }
                   *++yyssp = yystate = yytable[yyn];
                   *++yyvsp = yylval;
---- 1573,1591 ----
+--- 1577,1595 ----
   #endif
                   if (yyssp >= yyss + yystacksize - 1)
                   {
                   *++yyssp = yystate = yytable[yyn];
                   *++yyvsp = yylval;
 ***************
-*** 2473,2487 ****
+*** 2481,2495 ****
   #endif
       if (yyssp >= yyss + yystacksize - 1)
       {
   yyaccept:
 !     return (0);
   }
---- 2524,2570 ----
+--- 2535,2583 ----
   #endif
       if (yyssp >= yyss + yystacksize - 1)
       {
   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
 !