This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
make CAT2() portable for use as a macro argument with an extra
[perl5.git] / perly_c.diff
index f42a10c..0b73880 100644 (file)
@@ -28,7 +28,7 @@
   
 +     struct ysv *ysave;
 +     New(73, ysave, 1, struct ysv);
-+     SAVEDESTRUCTOR(yydestruct, ysave);
++     SAVEDESTRUCTOR_X(yydestruct, ysave);
 +     ysave->oldyydebug        = yydebug;
 +     ysave->oldyynerrs        = yynerrs;
 +     ysave->oldyyerrflag      = yyerrflag;
   yyaccept:
 !     return (0);
   }
---- 2524,2550 ----
+--- 2524,2569 ----
   #endif
       if (yyssp >= yyss + yystacksize - 1)
       {
 !     retval = 1;
   yyaccept:
 !     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);
   }