summaryrefslogtreecommitdiff
path: root/perly.c
diff options
context:
space:
mode:
Diffstat (limited to 'perly.c')
-rw-r--r--perly.c39
1 files changed, 22 insertions, 17 deletions
diff --git a/perly.c b/perly.c
index 0ed07fcf12..64ad3b5582 100644
--- a/perly.c
+++ b/perly.c
@@ -29,22 +29,7 @@ struct ysv {
YYSTYPE oldyylval;
};
-static void yydestruct(void *ptr);
-
-static void
-yydestruct(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);
-}
+static void yydestruct(pTHXo_ void *ptr);
#line 49 "perly.y"
#if 0 /* get this from perly.h instead */
@@ -1402,7 +1387,7 @@ yyparse()
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;
@@ -2494,3 +2479,23 @@ yyabort:
yyaccept:
return retval;
}
+
+#ifdef PERL_OBJECT
+#define NO_XSLOCKS
+#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);
+}