aboutsummaryrefslogtreecommitdiffstats
path: root/lang/perl5.10
diff options
context:
space:
mode:
authorskv <skv@FreeBSD.org>2009-07-06 20:16:08 +0800
committerskv <skv@FreeBSD.org>2009-07-06 20:16:08 +0800
commitc74d798802719f9908e68d314d6e772799943e60 (patch)
treea93b992e5d9525556d26ba948a7ccb89e1a31cd5 /lang/perl5.10
parent93e59010acc8681692fcc6d1ad0618fce587d976 (diff)
downloadfreebsd-ports-gnome-c74d798802719f9908e68d314d6e772799943e60.tar.gz
freebsd-ports-gnome-c74d798802719f9908e68d314d6e772799943e60.tar.zst
freebsd-ports-gnome-c74d798802719f9908e68d314d6e772799943e60.zip
- Add option MULTIPLICITY
- Add bugfix for map memory leak (RT#53038)
Diffstat (limited to 'lang/perl5.10')
-rw-r--r--lang/perl5.10/Makefile7
-rw-r--r--lang/perl5.10/files/patch-bug5303895
2 files changed, 101 insertions, 1 deletions
diff --git a/lang/perl5.10/Makefile b/lang/perl5.10/Makefile
index 429d5003a610..31378ddb7a11 100644
--- a/lang/perl5.10/Makefile
+++ b/lang/perl5.10/Makefile
@@ -7,7 +7,7 @@
PORTNAME= perl
PORTVERSION= ${PERL_VERSION}
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= lang devel perl5
MASTER_SITES= CPAN \
${MASTER_SITE_LOCAL:S/$/:local/} \
@@ -28,6 +28,7 @@ OPTIONS= DEBUGGING "Build with debugging support" off \
PERL_MALLOC "Use Perl malloc" off \
PERL_64BITINT "Use 64 bit integers (on i386)" on \
THREADS "Build threaded perl" off \
+ MULTIPLICITY "Use multiplicity" off \
SUIDPERL "Build set-user-id suidperl binary" off \
SITECUSTOMIZE "Run-time customization of @INC" off \
USE_PERL "Rewrite links in /usr/bin" on
@@ -130,6 +131,10 @@ CONFIGURE_ARGS+= -Dusemymalloc=n
CONFIGURE_ARGS+= -Duse64bitint
.endif
+.if defined(WITH_MULTIPLICITY)
+CONFIGURE_ARGS+= -Dusemultiplicity=y
+.endif
+
.if defined(WITH_SITECUSTOMIZE)
CONFIGURE_ARGS+= -Dusesitecustomize
.endif
diff --git a/lang/perl5.10/files/patch-bug53038 b/lang/perl5.10/files/patch-bug53038
new file mode 100644
index 000000000000..c1c0954f807f
--- /dev/null
+++ b/lang/perl5.10/files/patch-bug53038
@@ -0,0 +1,95 @@
+# http://rt.perl.org/rt3/Public/Bug/Display.html?id=53038
+# http://perl5.git.perl.org/perl.git/commitdiff/414bf5ae0886eb91e2f6dbb35893ddb012852bef?hp=2556f95e0f4f5e8e95c9766374614ab52edefe3d
+diff --git a/XSUB.h b/XSUB.h
+index 46e9c29..2d95b1e 100644
+--- XSUB.h
++++ XSUB.h
+@@ -364,10 +364,10 @@ Rethrows a previously caught exception. See L<perlguts/"Exception Handling">.
+ SAVETMPS ; \
+ SAVEINT(db->filtering) ; \
+ db->filtering = TRUE ; \
+- SAVESPTR(DEFSV) ; \
++ SAVE_DEFSV ; \
+ if (name[7] == 's') \
+ arg = newSVsv(arg); \
+- DEFSV = arg ; \
++ DEFSV_set(arg) ; \
+ SvTEMP_off(arg) ; \
+ PUSHMARK(SP) ; \
+ PUTBACK ; \
+diff --git a/perl.h b/perl.h
+index e07416e..526155b 100644
+--- perl.h
++++ perl.h
+@@ -1306,8 +1306,12 @@ EXTERN_C char *crypt(const char *, const char *);
+ #endif
+
+ #define ERRSV GvSV(PL_errgv)
+-/* FIXME? Change the assignments to PL_defgv to instantiate GvSV? */
+-#define DEFSV GvSVn(PL_defgv)
++#ifdef PERL_CORE
++# define DEFSV (0 + GvSVn(PL_defgv))
++#else
++# define DEFSV GvSVn(PL_defgv)
++#endif
++#define DEFSV_set(sv) (GvSV(PL_defgv) = (sv))
+ #define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv))
+
+ #define ERRHV GvHV(PL_errgv) /* XXX unused, here for compatibility */
+diff --git a/pp_ctl.c b/pp_ctl.c
+index 08b14c6..3ef7e32 100644
+--- pp_ctl.c
++++ pp_ctl.c
+@@ -988,7 +988,7 @@ PP(pp_grepstart)
+ if (PL_op->op_private & OPpGREP_LEX)
+ PAD_SVl(PL_op->op_targ) = src;
+ else
+- DEFSV = src;
++ DEFSV_set(src);
+
+ PUTBACK;
+ if (PL_op->op_type == OP_MAPSTART)
+@@ -1099,7 +1099,7 @@ PP(pp_mapwhile)
+ if (PL_op->op_private & OPpGREP_LEX)
+ PAD_SVl(PL_op->op_targ) = src;
+ else
+- DEFSV = src;
++ DEFSV_set(src);
+
+ RETURNOP(cLOGOP->op_other);
+ }
+@@ -4822,7 +4822,7 @@ S_run_user_filter(pTHX_ int idx, SV *buf_sv, int maxlen)
+ SAVETMPS;
+ EXTEND(SP, 2);
+
+- DEFSV = upstream;
++ DEFSV_set(upstream);
+ PUSHMARK(SP);
+ mPUSHi(0);
+ if (filter_state) {
+diff --git a/pp_hot.c b/pp_hot.c
+index eeedc5b..6450e25 100644
+--- pp_hot.c
++++ pp_hot.c
+@@ -2424,7 +2424,7 @@ PP(pp_grepwhile)
+ if (PL_op->op_private & OPpGREP_LEX)
+ PAD_SVl(PL_op->op_targ) = src;
+ else
+- DEFSV = src;
++ DEFSV_set(src);
+
+ RETURNOP(cLOGOP->op_other);
+ }
+diff --git a/regexec.c b/regexec.c
+index 025d159..6c0923f 100644
+--- regexec.c
++++ regexec.c
+@@ -2250,7 +2250,7 @@ S_regtry(pTHX_ regmatch_info *reginfo, char **startpos)
+ /* Make $_ available to executed code. */
+ if (reginfo->sv != DEFSV) {
+ SAVE_DEFSV;
+- DEFSV = reginfo->sv;
++ DEFSV_set(reginfo->sv);
+ }
+
+ if (!(SvTYPE(reginfo->sv) >= SVt_PVMG && SvMAGIC(reginfo->sv)