svn commit: r383910 - head/devel/p5-Lexical-Var/files
Mathieu Arnold
mat at FreeBSD.org
Mon Apr 13 12:08:39 UTC 2015
Author: mat
Date: Mon Apr 13 12:08:38 2015
New Revision: 383910
URL: https://svnweb.freebsd.org/changeset/ports/383910
Log:
Fix with Perl 5.21.7+
Obtained from: https://rt.cpan.org/Public/Bug/Display.html?id=101058
Sponsored by: Absolight
Added:
head/devel/p5-Lexical-Var/files/
head/devel/p5-Lexical-Var/files/patch-lib_Lexical_Var.xs (contents, props changed)
Added: head/devel/p5-Lexical-Var/files/patch-lib_Lexical_Var.xs
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/p5-Lexical-Var/files/patch-lib_Lexical_Var.xs Mon Apr 13 12:08:38 2015 (r383910)
@@ -0,0 +1,58 @@
+--- lib/Lexical/Var.xs.orig 2013-08-25 18:51:34 UTC
++++ lib/Lexical/Var.xs
+@@ -62,7 +62,12 @@ typedef AV PAD;
+ #endif /* !COP_SEQ_RANGE_LOW */
+
+ #ifndef COP_SEQ_RANGE_LOW_set
+-# if PERL_VERSION_GE(5,9,5)
++# ifdef newPADNAMEpvn
++# define COP_SEQ_RANGE_LOW_set(sv,val) \
++ do { (sv)->xpadn_low = (val); } while(0)
++# define COP_SEQ_RANGE_HIGH_set(sv,val) \
++ do { (sv)->xpadn_high = (val); } while(0)
++# elif PERL_VERSION_GE(5,9,5)
+ # define COP_SEQ_RANGE_LOW_set(sv,val) \
+ do { ((XPVNV*)SvANY(sv))->xnv_u.xpad_cop_seq.xlow = val; } while(0)
+ # define COP_SEQ_RANGE_HIGH_set(sv,val) \
+@@ -95,6 +100,12 @@ static SV *THX_newSV_type(pTHX_ svtype t
+ # define GV_NOTQUAL 0
+ #endif /* !GV_NOTQUAL */
+
++#ifndef padnamelist_store
++ /* Note that the return values are different. If we ever call it in non-
++ void context, we would have to change it to *av_store. */
++# define padnamelist_store av_store
++#endif
++
+ /*
+ * scalar classification
+ *
+@@ -460,13 +471,18 @@ static void THX_setup_pad(pTHX_ CV *comp
+ PADNAMELIST *padname = PadlistNAMES(padlist);
+ PAD *padvar = PadlistARRAY(padlist)[1];
+ PADOFFSET ouroffset;
+- SV *ourname, *ourvar;
++ PADNAME *ourname;
++ SV *ourvar;
+ HV *stash;
+ ourvar = *av_fetch(padvar, PadMAX(padvar) + 1, 1);
+ SvPADMY_on(ourvar);
+ ouroffset = PadMAX(padvar);
++#ifdef newPADNAMEpvn
++ ourname = newPADNAMEpvn(name, strlen(name));
++#else
+ ourname = newSV_type(SVt_PADNAME);
+ sv_setpv(ourname, name);
++#endif
+ SvPAD_OUR_on(ourname);
+ stash = name[0] == '$' ? stash_lex_sv :
+ name[0] == '@' ? stash_lex_av : stash_lex_hv;
+@@ -474,7 +490,7 @@ static void THX_setup_pad(pTHX_ CV *comp
+ COP_SEQ_RANGE_LOW_set(ourname, PL_cop_seqmax);
+ COP_SEQ_RANGE_HIGH_set(ourname, pad_max());
+ PL_cop_seqmax++;
+- av_store(padname, ouroffset, ourname);
++ padnamelist_store(padname, ouroffset, ourname);
+ #ifdef PadnamelistMAXNAMED
+ PadnamelistMAXNAMED(padname) = ouroffset;
+ #endif /* PadnamelistMAXNAMED */
More information about the svn-ports-all
mailing list