On Thu, Apr 22, 2010 at 06:15:47PM +0300, Damyan Ivanov wrote:
> -=| Niko Tyni, Tue, Apr 20, 2010 at 08:42:45PM +0300 |=-
> > Package: libdata-alias-perl
> > Version: 1.07-1
> > Severity: important
> > User: debian-p...@lists.debian.org
> > Usertags: perl-5.12-transition
> > Forwarded: http://rt.cpan.org/Public/Bug/Display.html?id=36165
> > 
> > This package fails to build with Perl 5.12.0 (currently in experimental):

> That ticket only talks about NullXX being replaced with NULL, which 
> seems to fix only part of the problem. There are also SVt_RV, 
> PL_no_symref and OP_SETSTATE missing.

I got as far as getting it to compile (patch attached) without breaking
5.10.1, but the tests segfault on 5.12.

SVt_RV can be #define'd to SVt_IV on >= 5.11.0. See
/usr/lib/perl/5.12/CORE/sv.h, which would take care of compatibility if
Alias.xs didn't #define PERL_CORE. (I understand this is very much frowned
upon for CPAN modules.)

OP_SETSTATE was disabled before 5.6.0 AFAICS and finally removed
in the 5.11 series.
 
http://perl5.git.perl.org/perl.git/commit/38a230cb455fb1aca316039ba1d4aed58c0c60d5

The set of reverse dependencies is rather big, so this is going to be
something of a blocker.
-- 
Niko Tyni   nt...@debian.org
diff --git a/Alias.xs b/Alias.xs
index 6298204..2e015ff 100644
--- a/Alias.xs
+++ b/Alias.xs
@@ -75,6 +75,10 @@
 #define SvPVX_const SvPVX
 #endif
 
+#if (PERL_COMBI_VERSION >= 5011000)
+#define SVt_RV SVt_IV
+#endif
+
 #ifndef SvREFCNT_inc_NN
 #define SvREFCNT_inc_NN SvREFCNT_inc
 #endif
@@ -366,7 +370,7 @@ STATIC void da_localize_gvar(pTHX_ GP *gp, SV **sptr) {
 	SSPUSHPTR(gp);
 	SSPUSHINT(SAVEt_DESTRUCTOR_X);
 	++gp->gp_refcnt;
-	*sptr = Nullsv;
+	*sptr = NULL;
 }
 
 STATIC SV *da_refgen(pTHX_ SV *sv) {
@@ -1248,7 +1252,7 @@ OP *DataAlias_pp_return(pTHX) {
 		cxstack_ix--;
 		POPSUB(cx, sv);
 	} else {
-		sv = Nullsv;
+		sv = NULL;
 	}
 	PL_curpm = newpm;
 	LEAVESUB(sv);
@@ -1433,7 +1437,7 @@ STATIC int da_transform(pTHX_ OP *op, int sib) {
 	int hits = 0;
 
 	while (op) {
-		OP *kid = Nullop, *tmp;
+		OP *kid = NULL, *tmp;
 		int ksib = TRUE;
 		OPCODE optype;
 
@@ -1447,7 +1451,9 @@ STATIC int da_transform(pTHX_ OP *op, int sib) {
 		default:
 			--hits;
 			switch (optype) {
+#if PERL_COMBI_VERSION < 5006000
 			case OP_SETSTATE:
+#endif
 			case OP_NEXTSTATE:
 			case OP_DBSTATE:
 				PL_curcop = (COP *) op;
@@ -1586,7 +1592,9 @@ STATIC int da_peep2(pTHX_ OP *o) {
 				if (da_peep2(aTHX_ k))
 					return 1;
 			} else switch (o->op_type ? o->op_type : o->op_targ) {
+#if PERL_COMBI_VERSION < 5006000
 			case OP_SETSTATE:
+#endif
 			case OP_NEXTSTATE:
 			case OP_DBSTATE:
 				PL_curcop = (COP *) o;
@@ -1764,7 +1772,7 @@ STATIC OP *da_ck_entersub(pTHX_ OP *o) {
 	kUNOP->op_first = last;
 	while (kid->op_sibling != last)
 		kid = kid->op_sibling;
-	kid->op_sibling = Nullop;
+	kid->op_sibling = NULL;
 	cLISTOPx(cUNOPo->op_first)->op_last = kid;
 	if (kid->op_type == OP_NULL && inside)
 		kid->op_flags &= ~OPf_SPECIAL;

Reply via email to