Introduce Perl 5.12.1

Acknowledgements:	kuriyama
This commit is contained in:
Sergey Skvortsov 2010-07-15 14:48:51 +00:00
parent fac7f3b3c8
commit c82c63a794
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=257819
33 changed files with 3147 additions and 2399 deletions

View file

@ -99,7 +99,9 @@ PERL_LEVEL= 0
PERL_ARCH?= mach
.if ${PERL_LEVEL} >= 501000
.if ${PERL_LEVEL} >= 501200
PERL_PORT?= perl5.12
.elif ${PERL_LEVEL} >= 501000
PERL_PORT?= perl5.10
.else # ${PERL_LEVEL} < 501000
PERL_PORT?= perl5.8
@ -149,7 +151,7 @@ masked_PERL_LEVEL= ${PERL_LEVEL}
.if ${want_perl_sign} == "+"
.if ${USE_PERL5_LEVEL} > ${masked_PERL_LEVEL}
USE_PERL5_REASON?= requires Perl ${want_perl_ver} or later, install lang/perl5.8 or lang/perl5.10 and try again
USE_PERL5_REASON?= requires Perl ${want_perl_ver} or later, install lang/perl5.8 or lang/perl5.10 or lang/perl5.12 and try again
IGNORE= ${USE_PERL5_REASON}
.endif # ${USE_PERL5_LEVEL} > ${masked_PERL_LEVEL}
.elif ${want_perl_sign} == ""

View file

@ -1474,7 +1474,9 @@ PERL_LEVEL=0
PERL_ARCH?= mach
.if ${PERL_LEVEL} >= 501000
.if ${PERL_LEVEL} >= 501200
PERL_PORT?= perl5.12
.elif ${PERL_LEVEL} >= 501000
PERL_PORT?= perl5.10
.else
PERL_PORT?= perl5.8

View file

@ -5,6 +5,30 @@ they are unavoidable.
You should get into the habit of checking this file for changes each time
you update your ports collection, before attempting any port upgrades.
20100715:
AFFECTS: users of lang/perl*
AUTHOR: skv@FreeBSD.org
lang/perl5.12 is out. If you want to switch to it from, for example
lang/perl5.10, that is:
Portupgrade users:
0) Fix pkgdb.db (for safety):
pkgdb -Ff
1) Reinstall new version of Perl (5.12):
env DISABLE_CONFLICTS=1 portupgrade -o lang/perl5.12 -f perl-5.10.\*
2) Reinstall everything that depends on Perl:
portupgrade -fr perl
Portmaster users:
env DISABLE_CONFLICTS=1 portmaster -o lang/perl5.12 lang/perl5.10
portmaster -r perl-
Note: If the "perl-" glob matches more than one port you will need to
specify the name of the Perl directory in /var/db/pkg explicitly.
20100626:
AFFECTS: users of japanese/ibus-mozc
AUTHOR: daichi@FreeBSD.org

View file

@ -244,6 +244,7 @@
SUBDIR += pcc
SUBDIR += pecl-perl
SUBDIR += perl5.10
SUBDIR += perl5.12
SUBDIR += perl5.8
SUBDIR += petite-chez
SUBDIR += pfe-devel

View file

@ -21,7 +21,8 @@ DIST_SUBDIR= perl
MAINTAINER= skv@FreeBSD.org
COMMENT= Practical Extraction and Report Language
CONFLICTS= perl-5.6.* perl-5.8.* perl-threaded-5.8.*
CONFLICTS= perl-5.6.* perl-5.8.* perl-threaded-5.8.* \
perl-5.12.* perl-threaded-5.12.*
MAKE_JOBS_UNSAFE= yes
OPTIONS= DEBUGGING "Build with debugging support" off \

View file

@ -7,7 +7,6 @@
PORTNAME= perl
PORTVERSION= ${PERL_VERSION}
PORTREVISION= 2
CATEGORIES= lang devel perl5
MASTER_SITES= CPAN \
${MASTER_SITE_LOCAL:S/$/:local/} \
@ -21,8 +20,8 @@ DIST_SUBDIR= perl
MAINTAINER= skv@FreeBSD.org
COMMENT= Practical Extraction and Report Language
CONFLICTS= perl-5.6.* perl-5.8.* perl-threaded-5.8.*
MAKE_JOBS_UNSAFE= yes
CONFLICTS= perl-5.6.* perl-5.8.* perl-threaded-5.8.* \
perl-5.10.* perl-threaded-5.10.*
OPTIONS= DEBUGGING "Build with debugging support" off \
GDBM "Build GDBM_File extension" off \
@ -36,7 +35,7 @@ OPTIONS= DEBUGGING "Build with debugging support" off \
PORTSCOUT= limitw:1,even
PERL_VERSION= 5.10.1
PERL_VERSION= 5.12.1
PERL_ARCH= mach
SITE_PERL_REL?= lib/perl5/site_perl/${PERL_VERSION}
SITE_PERL?= ${LOCALBASE}/${SITE_PERL_REL}
@ -148,7 +147,7 @@ LINK_USRBIN= yes
LINK_USRBIN= no
.endif
LATEST_LINK= perl
NO_LATEST_LINK= yes
.if defined(WITH_GDBM)
MAN3+= GDBM_File.3
@ -213,7 +212,7 @@ post-install:
PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
test: build
@(cd ${WRKSRC}; make test)
@(cd ${WRKSRC}; TEST_JOBS=${MAKE_JOBS_NUMBER} make test_harness)
regression-test: test

View file

@ -20,6 +20,14 @@ MAN1+= perl5004delta.1
MAN1+= perl5005delta.1
MAN1+= perl5100delta.1
MAN1+= perl5101delta.1
MAN1+= perl5110delta.1
MAN1+= perl5111delta.1
MAN1+= perl5112delta.1
MAN1+= perl5113delta.1
MAN1+= perl5114delta.1
MAN1+= perl5115delta.1
MAN1+= perl5120delta.1
MAN1+= perl5121delta.1
MAN1+= perl561delta.1
MAN1+= perl56delta.1
MAN1+= perl570delta.1
@ -111,10 +119,8 @@ MAN1+= perllexwarn.1
MAN1+= perllinux.1
MAN1+= perllocale.1
MAN1+= perllol.1
MAN1+= perlmachten.1
MAN1+= perlmacos.1
MAN1+= perlmacosx.1
MAN1+= perlmint.1
MAN1+= perlmod.1
MAN1+= perlmodinstall.1
MAN1+= perlmodlib.1
@ -131,12 +137,12 @@ MAN1+= perlopentut.1
MAN1+= perlos2.1
MAN1+= perlos390.1
MAN1+= perlos400.1
MAN1+= perlothrtut.1
MAN1+= perlpacktut.1
MAN1+= perlperf.1
MAN1+= perlplan9.1
MAN1+= perlpod.1
MAN1+= perlpodspec.1
MAN1+= perlpolicy.1
MAN1+= perlport.1
MAN1+= perlpragma.1
MAN1+= perlqnx.1
@ -172,6 +178,7 @@ MAN1+= perltw.1
MAN1+= perlunicode.1
MAN1+= perlunifaq.1
MAN1+= perluniintro.1
MAN1+= perluniprops.1
MAN1+= perlunitut.1
MAN1+= perlutil.1
MAN1+= perluts.1
@ -202,6 +209,7 @@ MAN1+= splain.1
MAN1+= xsubpp.1
MAN3+= AnyDBM_File.3
MAN3+= App::Cpan.3
MAN3+= App::Prove.3
MAN3+= App::Prove::State.3
MAN3+= App::Prove::State::Result.3
@ -281,7 +289,6 @@ MAN3+= CPANPLUS::Shell::Default::Plugins::HOWTO.3
MAN3+= CPANPLUS::Shell::Default::Plugins::Remote.3
MAN3+= CPANPLUS::Shell::Default::Plugins::Source.3
MAN3+= Carp.3
MAN3+= Carp::Heavy.3
MAN3+= Class::ISA.3
MAN3+= Class::Struct.3
MAN3+= Compress::Raw::Bzip2.3
@ -491,6 +498,7 @@ MAN3+= Module::Build.3
MAN3+= Module::Build::API.3
MAN3+= Module::Build::Authoring.3
MAN3+= Module::Build::Base.3
MAN3+= Module::Build::Bundling.3
MAN3+= Module::Build::Compat.3
MAN3+= Module::Build::ConfigData.3
MAN3+= Module::Build::Cookbook.3
@ -511,7 +519,6 @@ MAN3+= Module::Build::Platform::aix.3
MAN3+= Module::Build::Platform::cygwin.3
MAN3+= Module::Build::Platform::darwin.3
MAN3+= Module::Build::Platform::os2.3
MAN3+= Module::Build::YAML.3
MAN3+= Module::CoreList.3
MAN3+= Module::Load.3
MAN3+= Module::Load::Conditional.3
@ -557,6 +564,9 @@ MAN3+= Pod::Man.3
MAN3+= Pod::ParseLink.3
MAN3+= Pod::ParseUtils.3
MAN3+= Pod::Parser.3
MAN3+= Pod::Perldoc.3
MAN3+= Pod::Perldoc::BaseTo.3
MAN3+= Pod::Perldoc::GetOptsOO.3
MAN3+= Pod::Perldoc::ToChecker.3
MAN3+= Pod::Perldoc::ToMan.3
MAN3+= Pod::Perldoc::ToNroff.3
@ -694,10 +704,10 @@ MAN3+= Unicode::UCD.3
MAN3+= User::grent.3
MAN3+= User::pwent.3
MAN3+= XS::APItest.3
MAN3+= XS::APItest::KeywordRPN.3
MAN3+= XS::Typemap.3
MAN3+= XSLoader.3
MAN3+= attributes.3
MAN3+= attrs.3
MAN3+= autodie.3
MAN3+= autodie::exception.3
MAN3+= autodie::exception::system.3
@ -711,6 +721,7 @@ MAN3+= blib.3
MAN3+= bytes.3
MAN3+= charnames.3
MAN3+= constant.3
MAN3+= deprecate.3
MAN3+= diagnostics.3
MAN3+= encoding.3
MAN3+= encoding::warnings.3
@ -718,6 +729,7 @@ MAN3+= feature.3
MAN3+= fields.3
MAN3+= filetest.3
MAN3+= if.3
MAN3+= inc::latest.3
MAN3+= integer.3
MAN3+= less.3
MAN3+= lib.3
@ -742,4 +754,3 @@ MAN3+= version::Internals.3
MAN3+= vmsish.3
MAN3+= warnings.3
MAN3+= warnings::register.3

View file

@ -1,6 +1,6 @@
MD5 (perl/perl-5.10.1.tar.bz2) = 82400c6d34f7b7b43d0196c76cd2bbb1
SHA256 (perl/perl-5.10.1.tar.bz2) = 9385f2c8c2ca8b1dc4a7c31903f1f8dc8f2ba867dc2a9e5c93012ed6b564e826
SIZE (perl/perl-5.10.1.tar.bz2) = 11608061
MD5 (perl/perl-5.12.1.tar.bz2) = f7f2d7f5aaac15a75028381b159a560f
SHA256 (perl/perl-5.12.1.tar.bz2) = e9189f09447b2b90a1d186b418f91e583eba41eec238e8f5b8730f71d5fc1ec5
SIZE (perl/perl-5.12.1.tar.bz2) = 12296076
MD5 (perl/BSDPAN-5.12.1_20100713.tar.bz2) = 2dcad380d91c60aaa4ac6db29d997712
SHA256 (perl/BSDPAN-5.12.1_20100713.tar.bz2) = f700acc5ca29c6ef94460d23acffde77834e883cdb7cd043dbdb7c7d709a9392
SIZE (perl/BSDPAN-5.12.1_20100713.tar.bz2) = 8430

View file

@ -1,5 +1,5 @@
--- lib/ExtUtils/t/INST_PREFIX.t.orig Wed Feb 15 12:46:31 2006
+++ lib/ExtUtils/t/INST_PREFIX.t Wed Feb 15 12:46:52 2006
--- cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t.orig Wed Feb 15 12:46:31 2006
+++ cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t Wed Feb 15 12:46:52 2006
@@ -16,7 +16,7 @@ BEGIN {
}

View file

@ -1,5 +1,5 @@
--- lib/ExtUtils/MM_Any.pm.orig Wed Feb 15 12:20:43 2006
+++ lib/ExtUtils/MM_Any.pm Wed Feb 15 12:22:29 2006
--- cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm.orig Wed Feb 15 12:20:43 2006
+++ cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm Wed Feb 15 12:22:29 2006
@@ -1069,13 +1069,14 @@ sub init_INSTALL_from_PREFIX {
('$(PREFIX)') x 3;
}

View file

@ -1,95 +0,0 @@
# http://rt.perl.org/rt3//Public/Bug/Display.html?id=69973
# http://perl5.git.perl.org/perl.git/commitdiff_plain/0abd0d78a73da1c4d13b1c700526b7e5d03b32d4?hp=fe88edf0c4ada4230b84bdb5417029b8f766694a
diff --git a/ext/re/t/regop.t b/ext/re/t/regop.t
index 9118bf6..46e6ec0 100644
--- ext/re/t/regop.t
+++ ext/re/t/regop.t
@@ -231,12 +231,12 @@ anchored "ABC" at 0
#Freeing REx: "(\\.COM|\\.EXE|\\.BAT|\\.CMD|\\.VBS|\\.VBE|\\.JS|\\.JSE|\\."......
%MATCHED%
floating ""$ at 3..4 (checking floating)
-1:1[1] 3:2[1] 5:2[64] 45:83[1] 47:84[1] 48:85[0]
-stclass EXACTF <.> minlen 3
-Found floating substr ""$ at offset 30...
-Does not contradict STCLASS...
-Guessed: match at offset 26
-Matching stclass EXACTF <.> against ".exe"
+#1:1[1] 3:2[1] 5:2[64] 45:83[1] 47:84[1] 48:85[0]
+#stclass EXACTF <.> minlen 3
+#Found floating substr ""$ at offset 30...
+#Does not contradict STCLASS...
+#Guessed: match at offset 26
+#Matching stclass EXACTF <.> against ".exe"
---
#Compiling REx "[q]"
#size 12 nodes Got 100 bytes for offset annotations.
diff --git a/regcomp.c b/regcomp.c
index 6e9fa26..eb5f12f 100644
--- regcomp.c
+++ regcomp.c
@@ -2833,13 +2833,18 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp,
}
} else {
/*
- Currently we assume that the trie can handle unicode and ascii
- matches fold cased matches. If this proves true then the following
- define will prevent tries in this situation.
-
- #define TRIE_TYPE_IS_SAFE (UTF || optype==EXACT)
-*/
+ Currently we do not believe that the trie logic can
+ handle case insensitive matching properly when the
+ pattern is not unicode (thus forcing unicode semantics).
+
+ If/when this is fixed the following define can be swapped
+ in below to fully enable trie logic.
+
#define TRIE_TYPE_IS_SAFE 1
+
+*/
+#define TRIE_TYPE_IS_SAFE (UTF || optype==EXACT)
+
if ( last && TRIE_TYPE_IS_SAFE ) {
make_trie( pRExC_state,
startbranch, first, cur, tail, count,
diff --git a/regexec.c b/regexec.c
index 402ede3..ec09c28 100644
--- regexec.c
+++ regexec.c
@@ -1105,16 +1105,15 @@ Perl_re_intuit_start(pTHX_ REGEXP * const rx, SV *sv, char *strpos,
#define REXEC_TRIE_READ_CHAR(trie_type, trie, widecharmap, uc, uscan, len, \
uvc, charid, foldlen, foldbuf, uniflags) STMT_START { \
- UV uvc_unfolded = 0; \
switch (trie_type) { \
case trie_utf8_fold: \
if ( foldlen>0 ) { \
- uvc_unfolded = uvc = utf8n_to_uvuni( uscan, UTF8_MAXLEN, &len, uniflags ); \
+ uvc = utf8n_to_uvuni( uscan, UTF8_MAXLEN, &len, uniflags ); \
foldlen -= len; \
uscan += len; \
len=0; \
} else { \
- uvc_unfolded = uvc = utf8n_to_uvuni( (U8*)uc, UTF8_MAXLEN, &len, uniflags ); \
+ uvc = utf8n_to_uvuni( (U8*)uc, UTF8_MAXLEN, &len, uniflags ); \
uvc = to_uni_fold( uvc, foldbuf, &foldlen ); \
foldlen -= UNISKIP( uvc ); \
uscan = foldbuf + UNISKIP( uvc ); \
@@ -1140,7 +1139,6 @@ uvc, charid, foldlen, foldbuf, uniflags) STMT_START { \
uvc = (UV)*uc; \
len = 1; \
} \
- \
if (uvc < 256) { \
charid = trie->charmap[ uvc ]; \
} \
@@ -1153,9 +1151,6 @@ uvc, charid, foldlen, foldbuf, uniflags) STMT_START { \
charid = (U16)SvIV(*svpp); \
} \
} \
- if (!charid && trie_type == trie_utf8_fold && !UTF) { \
- charid = trie->charmap[uvc_unfolded]; \
- } \
} STMT_END
#define REXEC_FBC_EXACTISH_CHECK(CoNd) \

View file

@ -1,46 +0,0 @@
# http://rt.perl.org/rt3/Public/Bug/Display.html?id=71952
# http://perl5.git.perl.org/perl.git/commitdiff_plain/1f15e670edb515b744e9021b4a42a7955da83093?hp=1f730e6c11736bad913e605b064200a67117e898
diff --git a/sv.c b/sv.c
index 4e80e18..a3eb187 100644
--- sv.c
+++ sv.c
@@ -5664,7 +5664,8 @@ Perl_sv_clear(pTHX_ register SV *const sv)
&& !CvCONST(destructor)
/* Don't bother calling an empty destructor */
&& (CvISXSUB(destructor)
- || CvSTART(destructor)->op_next->op_type != OP_LEAVESUB))
+ || (CvSTART(destructor)
+ && (CvSTART(destructor)->op_next->op_type != OP_LEAVESUB))))
{
SV* const tmpref = newRV(sv);
SvREADONLY_on(tmpref); /* DESTROY() could be naughty */
diff --git a/t/op/method.t b/t/op/method.t
index afa8cfb..b602ca2 100644
--- t/op/method.t
+++ t/op/method.t
@@ -10,7 +10,7 @@ BEGIN {
require "test.pl";
}
-print "1..78\n";
+print "1..79\n";
@A::ISA = 'B';
@B::ISA = 'C';
@@ -292,3 +292,16 @@ EOT
"check if UNIVERSAL::AUTOLOAD works",
);
}
+
+# Test for #71952: crash when looking for a nonexistent destructor
+# Regression introduced by fbb3ee5af3d4
+{
+ fresh_perl_is(<<'EOT',
+sub M::DESTROY; bless {}, "M" ; print "survived\n";
+EOT
+ "survived",
+ {},
+ "no crash with a declared but missing DESTROY method"
+ );
+}
+

View file

@ -1,61 +0,0 @@
--- perl.c
+++ perl.c
#else /* IAMSUID */
@@ -4882,6 +4882,28 @@
incpush(APPLLIB_EXP, TRUE, TRUE, TRUE, TRUE);
#endif
+#ifdef SITEARCH_EXP
+ /* sitearch is always relative to sitelib on Windows for
+ * DLL-based path intuition to work correctly */
+# if !defined(WIN32)
+ incpush(SITEARCH_EXP, FALSE, FALSE, TRUE, TRUE);
+# endif
+#endif
+
+#ifdef SITELIB_EXP
+# if defined(WIN32)
+ /* this picks up sitearch as well */
+ incpush(SITELIB_EXP, TRUE, FALSE, TRUE, TRUE);
+# else
+ incpush(SITELIB_EXP, FALSE, FALSE, TRUE, TRUE);
+# endif
+#endif
+
+#if defined(SITELIB_STEM) && defined(PERL_INC_VERSION_LIST)
+ /* Search for version-specific dirs below here */
+ incpush(SITELIB_STEM, FALSE, TRUE, TRUE, TRUE);
+#endif
+
#ifdef ARCHLIB_EXP
incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE, TRUE);
#endif
@@ -4915,28 +4937,6 @@
incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE, TRUE);
#endif
-#ifdef SITEARCH_EXP
- /* sitearch is always relative to sitelib on Windows for
- * DLL-based path intuition to work correctly */
-# if !defined(WIN32)
- incpush(SITEARCH_EXP, FALSE, FALSE, TRUE, TRUE);
-# endif
-#endif
-
-#ifdef SITELIB_EXP
-# if defined(WIN32)
- /* this picks up sitearch as well */
- incpush(SITELIB_EXP, TRUE, FALSE, TRUE, TRUE);
-# else
- incpush(SITELIB_EXP, FALSE, FALSE, TRUE, TRUE);
-# endif
-#endif
-
-#if defined(SITELIB_STEM) && defined(PERL_INC_VERSION_LIST)
- /* Search for version-specific dirs below here */
- incpush(SITELIB_STEM, FALSE, TRUE, TRUE, TRUE);
-#endif
-
#ifdef PERL_VENDORARCH_EXP
/* vendorarch is always relative to vendorlib on Windows for
* DLL-based path intuition to work correctly */

File diff suppressed because it is too large Load diff

View file

@ -7,7 +7,6 @@
PORTNAME= perl
PORTVERSION= ${PERL_VERSION}
PORTREVISION= 2
CATEGORIES= lang devel perl5
MASTER_SITES= CPAN \
${MASTER_SITE_LOCAL:S/$/:local/} \
@ -21,8 +20,8 @@ DIST_SUBDIR= perl
MAINTAINER= skv@FreeBSD.org
COMMENT= Practical Extraction and Report Language
CONFLICTS= perl-5.6.* perl-5.8.* perl-threaded-5.8.*
MAKE_JOBS_UNSAFE= yes
CONFLICTS= perl-5.6.* perl-5.8.* perl-threaded-5.8.* \
perl-5.10.* perl-threaded-5.10.*
OPTIONS= DEBUGGING "Build with debugging support" off \
GDBM "Build GDBM_File extension" off \
@ -36,7 +35,7 @@ OPTIONS= DEBUGGING "Build with debugging support" off \
PORTSCOUT= limitw:1,even
PERL_VERSION= 5.10.1
PERL_VERSION= 5.12.1
PERL_ARCH= mach
SITE_PERL_REL?= lib/perl5/site_perl/${PERL_VERSION}
SITE_PERL?= ${LOCALBASE}/${SITE_PERL_REL}
@ -148,7 +147,7 @@ LINK_USRBIN= yes
LINK_USRBIN= no
.endif
LATEST_LINK= perl
NO_LATEST_LINK= yes
.if defined(WITH_GDBM)
MAN3+= GDBM_File.3
@ -213,7 +212,7 @@ post-install:
PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
test: build
@(cd ${WRKSRC}; make test)
@(cd ${WRKSRC}; TEST_JOBS=${MAKE_JOBS_NUMBER} make test_harness)
regression-test: test

View file

@ -20,6 +20,14 @@ MAN1+= perl5004delta.1
MAN1+= perl5005delta.1
MAN1+= perl5100delta.1
MAN1+= perl5101delta.1
MAN1+= perl5110delta.1
MAN1+= perl5111delta.1
MAN1+= perl5112delta.1
MAN1+= perl5113delta.1
MAN1+= perl5114delta.1
MAN1+= perl5115delta.1
MAN1+= perl5120delta.1
MAN1+= perl5121delta.1
MAN1+= perl561delta.1
MAN1+= perl56delta.1
MAN1+= perl570delta.1
@ -111,10 +119,8 @@ MAN1+= perllexwarn.1
MAN1+= perllinux.1
MAN1+= perllocale.1
MAN1+= perllol.1
MAN1+= perlmachten.1
MAN1+= perlmacos.1
MAN1+= perlmacosx.1
MAN1+= perlmint.1
MAN1+= perlmod.1
MAN1+= perlmodinstall.1
MAN1+= perlmodlib.1
@ -131,12 +137,12 @@ MAN1+= perlopentut.1
MAN1+= perlos2.1
MAN1+= perlos390.1
MAN1+= perlos400.1
MAN1+= perlothrtut.1
MAN1+= perlpacktut.1
MAN1+= perlperf.1
MAN1+= perlplan9.1
MAN1+= perlpod.1
MAN1+= perlpodspec.1
MAN1+= perlpolicy.1
MAN1+= perlport.1
MAN1+= perlpragma.1
MAN1+= perlqnx.1
@ -172,6 +178,7 @@ MAN1+= perltw.1
MAN1+= perlunicode.1
MAN1+= perlunifaq.1
MAN1+= perluniintro.1
MAN1+= perluniprops.1
MAN1+= perlunitut.1
MAN1+= perlutil.1
MAN1+= perluts.1
@ -202,6 +209,7 @@ MAN1+= splain.1
MAN1+= xsubpp.1
MAN3+= AnyDBM_File.3
MAN3+= App::Cpan.3
MAN3+= App::Prove.3
MAN3+= App::Prove::State.3
MAN3+= App::Prove::State::Result.3
@ -281,7 +289,6 @@ MAN3+= CPANPLUS::Shell::Default::Plugins::HOWTO.3
MAN3+= CPANPLUS::Shell::Default::Plugins::Remote.3
MAN3+= CPANPLUS::Shell::Default::Plugins::Source.3
MAN3+= Carp.3
MAN3+= Carp::Heavy.3
MAN3+= Class::ISA.3
MAN3+= Class::Struct.3
MAN3+= Compress::Raw::Bzip2.3
@ -491,6 +498,7 @@ MAN3+= Module::Build.3
MAN3+= Module::Build::API.3
MAN3+= Module::Build::Authoring.3
MAN3+= Module::Build::Base.3
MAN3+= Module::Build::Bundling.3
MAN3+= Module::Build::Compat.3
MAN3+= Module::Build::ConfigData.3
MAN3+= Module::Build::Cookbook.3
@ -511,7 +519,6 @@ MAN3+= Module::Build::Platform::aix.3
MAN3+= Module::Build::Platform::cygwin.3
MAN3+= Module::Build::Platform::darwin.3
MAN3+= Module::Build::Platform::os2.3
MAN3+= Module::Build::YAML.3
MAN3+= Module::CoreList.3
MAN3+= Module::Load.3
MAN3+= Module::Load::Conditional.3
@ -557,6 +564,9 @@ MAN3+= Pod::Man.3
MAN3+= Pod::ParseLink.3
MAN3+= Pod::ParseUtils.3
MAN3+= Pod::Parser.3
MAN3+= Pod::Perldoc.3
MAN3+= Pod::Perldoc::BaseTo.3
MAN3+= Pod::Perldoc::GetOptsOO.3
MAN3+= Pod::Perldoc::ToChecker.3
MAN3+= Pod::Perldoc::ToMan.3
MAN3+= Pod::Perldoc::ToNroff.3
@ -694,10 +704,10 @@ MAN3+= Unicode::UCD.3
MAN3+= User::grent.3
MAN3+= User::pwent.3
MAN3+= XS::APItest.3
MAN3+= XS::APItest::KeywordRPN.3
MAN3+= XS::Typemap.3
MAN3+= XSLoader.3
MAN3+= attributes.3
MAN3+= attrs.3
MAN3+= autodie.3
MAN3+= autodie::exception.3
MAN3+= autodie::exception::system.3
@ -711,6 +721,7 @@ MAN3+= blib.3
MAN3+= bytes.3
MAN3+= charnames.3
MAN3+= constant.3
MAN3+= deprecate.3
MAN3+= diagnostics.3
MAN3+= encoding.3
MAN3+= encoding::warnings.3
@ -718,6 +729,7 @@ MAN3+= feature.3
MAN3+= fields.3
MAN3+= filetest.3
MAN3+= if.3
MAN3+= inc::latest.3
MAN3+= integer.3
MAN3+= less.3
MAN3+= lib.3
@ -742,4 +754,3 @@ MAN3+= version::Internals.3
MAN3+= vmsish.3
MAN3+= warnings.3
MAN3+= warnings::register.3

View file

@ -1,6 +1,6 @@
MD5 (perl/perl-5.10.1.tar.bz2) = 82400c6d34f7b7b43d0196c76cd2bbb1
SHA256 (perl/perl-5.10.1.tar.bz2) = 9385f2c8c2ca8b1dc4a7c31903f1f8dc8f2ba867dc2a9e5c93012ed6b564e826
SIZE (perl/perl-5.10.1.tar.bz2) = 11608061
MD5 (perl/perl-5.12.1.tar.bz2) = f7f2d7f5aaac15a75028381b159a560f
SHA256 (perl/perl-5.12.1.tar.bz2) = e9189f09447b2b90a1d186b418f91e583eba41eec238e8f5b8730f71d5fc1ec5
SIZE (perl/perl-5.12.1.tar.bz2) = 12296076
MD5 (perl/BSDPAN-5.12.1_20100713.tar.bz2) = 2dcad380d91c60aaa4ac6db29d997712
SHA256 (perl/BSDPAN-5.12.1_20100713.tar.bz2) = f700acc5ca29c6ef94460d23acffde77834e883cdb7cd043dbdb7c7d709a9392
SIZE (perl/BSDPAN-5.12.1_20100713.tar.bz2) = 8430

View file

@ -1,5 +1,5 @@
--- lib/ExtUtils/t/INST_PREFIX.t.orig Wed Feb 15 12:46:31 2006
+++ lib/ExtUtils/t/INST_PREFIX.t Wed Feb 15 12:46:52 2006
--- cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t.orig Wed Feb 15 12:46:31 2006
+++ cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t Wed Feb 15 12:46:52 2006
@@ -16,7 +16,7 @@ BEGIN {
}

View file

@ -1,5 +1,5 @@
--- lib/ExtUtils/MM_Any.pm.orig Wed Feb 15 12:20:43 2006
+++ lib/ExtUtils/MM_Any.pm Wed Feb 15 12:22:29 2006
--- cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm.orig Wed Feb 15 12:20:43 2006
+++ cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm Wed Feb 15 12:22:29 2006
@@ -1069,13 +1069,14 @@ sub init_INSTALL_from_PREFIX {
('$(PREFIX)') x 3;
}

View file

@ -1,95 +0,0 @@
# http://rt.perl.org/rt3//Public/Bug/Display.html?id=69973
# http://perl5.git.perl.org/perl.git/commitdiff_plain/0abd0d78a73da1c4d13b1c700526b7e5d03b32d4?hp=fe88edf0c4ada4230b84bdb5417029b8f766694a
diff --git a/ext/re/t/regop.t b/ext/re/t/regop.t
index 9118bf6..46e6ec0 100644
--- ext/re/t/regop.t
+++ ext/re/t/regop.t
@@ -231,12 +231,12 @@ anchored "ABC" at 0
#Freeing REx: "(\\.COM|\\.EXE|\\.BAT|\\.CMD|\\.VBS|\\.VBE|\\.JS|\\.JSE|\\."......
%MATCHED%
floating ""$ at 3..4 (checking floating)
-1:1[1] 3:2[1] 5:2[64] 45:83[1] 47:84[1] 48:85[0]
-stclass EXACTF <.> minlen 3
-Found floating substr ""$ at offset 30...
-Does not contradict STCLASS...
-Guessed: match at offset 26
-Matching stclass EXACTF <.> against ".exe"
+#1:1[1] 3:2[1] 5:2[64] 45:83[1] 47:84[1] 48:85[0]
+#stclass EXACTF <.> minlen 3
+#Found floating substr ""$ at offset 30...
+#Does not contradict STCLASS...
+#Guessed: match at offset 26
+#Matching stclass EXACTF <.> against ".exe"
---
#Compiling REx "[q]"
#size 12 nodes Got 100 bytes for offset annotations.
diff --git a/regcomp.c b/regcomp.c
index 6e9fa26..eb5f12f 100644
--- regcomp.c
+++ regcomp.c
@@ -2833,13 +2833,18 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp,
}
} else {
/*
- Currently we assume that the trie can handle unicode and ascii
- matches fold cased matches. If this proves true then the following
- define will prevent tries in this situation.
-
- #define TRIE_TYPE_IS_SAFE (UTF || optype==EXACT)
-*/
+ Currently we do not believe that the trie logic can
+ handle case insensitive matching properly when the
+ pattern is not unicode (thus forcing unicode semantics).
+
+ If/when this is fixed the following define can be swapped
+ in below to fully enable trie logic.
+
#define TRIE_TYPE_IS_SAFE 1
+
+*/
+#define TRIE_TYPE_IS_SAFE (UTF || optype==EXACT)
+
if ( last && TRIE_TYPE_IS_SAFE ) {
make_trie( pRExC_state,
startbranch, first, cur, tail, count,
diff --git a/regexec.c b/regexec.c
index 402ede3..ec09c28 100644
--- regexec.c
+++ regexec.c
@@ -1105,16 +1105,15 @@ Perl_re_intuit_start(pTHX_ REGEXP * const rx, SV *sv, char *strpos,
#define REXEC_TRIE_READ_CHAR(trie_type, trie, widecharmap, uc, uscan, len, \
uvc, charid, foldlen, foldbuf, uniflags) STMT_START { \
- UV uvc_unfolded = 0; \
switch (trie_type) { \
case trie_utf8_fold: \
if ( foldlen>0 ) { \
- uvc_unfolded = uvc = utf8n_to_uvuni( uscan, UTF8_MAXLEN, &len, uniflags ); \
+ uvc = utf8n_to_uvuni( uscan, UTF8_MAXLEN, &len, uniflags ); \
foldlen -= len; \
uscan += len; \
len=0; \
} else { \
- uvc_unfolded = uvc = utf8n_to_uvuni( (U8*)uc, UTF8_MAXLEN, &len, uniflags ); \
+ uvc = utf8n_to_uvuni( (U8*)uc, UTF8_MAXLEN, &len, uniflags ); \
uvc = to_uni_fold( uvc, foldbuf, &foldlen ); \
foldlen -= UNISKIP( uvc ); \
uscan = foldbuf + UNISKIP( uvc ); \
@@ -1140,7 +1139,6 @@ uvc, charid, foldlen, foldbuf, uniflags) STMT_START { \
uvc = (UV)*uc; \
len = 1; \
} \
- \
if (uvc < 256) { \
charid = trie->charmap[ uvc ]; \
} \
@@ -1153,9 +1151,6 @@ uvc, charid, foldlen, foldbuf, uniflags) STMT_START { \
charid = (U16)SvIV(*svpp); \
} \
} \
- if (!charid && trie_type == trie_utf8_fold && !UTF) { \
- charid = trie->charmap[uvc_unfolded]; \
- } \
} STMT_END
#define REXEC_FBC_EXACTISH_CHECK(CoNd) \

View file

@ -1,46 +0,0 @@
# http://rt.perl.org/rt3/Public/Bug/Display.html?id=71952
# http://perl5.git.perl.org/perl.git/commitdiff_plain/1f15e670edb515b744e9021b4a42a7955da83093?hp=1f730e6c11736bad913e605b064200a67117e898
diff --git a/sv.c b/sv.c
index 4e80e18..a3eb187 100644
--- sv.c
+++ sv.c
@@ -5664,7 +5664,8 @@ Perl_sv_clear(pTHX_ register SV *const sv)
&& !CvCONST(destructor)
/* Don't bother calling an empty destructor */
&& (CvISXSUB(destructor)
- || CvSTART(destructor)->op_next->op_type != OP_LEAVESUB))
+ || (CvSTART(destructor)
+ && (CvSTART(destructor)->op_next->op_type != OP_LEAVESUB))))
{
SV* const tmpref = newRV(sv);
SvREADONLY_on(tmpref); /* DESTROY() could be naughty */
diff --git a/t/op/method.t b/t/op/method.t
index afa8cfb..b602ca2 100644
--- t/op/method.t
+++ t/op/method.t
@@ -10,7 +10,7 @@ BEGIN {
require "test.pl";
}
-print "1..78\n";
+print "1..79\n";
@A::ISA = 'B';
@B::ISA = 'C';
@@ -292,3 +292,16 @@ EOT
"check if UNIVERSAL::AUTOLOAD works",
);
}
+
+# Test for #71952: crash when looking for a nonexistent destructor
+# Regression introduced by fbb3ee5af3d4
+{
+ fresh_perl_is(<<'EOT',
+sub M::DESTROY; bless {}, "M" ; print "survived\n";
+EOT
+ "survived",
+ {},
+ "no crash with a declared but missing DESTROY method"
+ );
+}
+

View file

@ -1,61 +0,0 @@
--- perl.c
+++ perl.c
#else /* IAMSUID */
@@ -4882,6 +4882,28 @@
incpush(APPLLIB_EXP, TRUE, TRUE, TRUE, TRUE);
#endif
+#ifdef SITEARCH_EXP
+ /* sitearch is always relative to sitelib on Windows for
+ * DLL-based path intuition to work correctly */
+# if !defined(WIN32)
+ incpush(SITEARCH_EXP, FALSE, FALSE, TRUE, TRUE);
+# endif
+#endif
+
+#ifdef SITELIB_EXP
+# if defined(WIN32)
+ /* this picks up sitearch as well */
+ incpush(SITELIB_EXP, TRUE, FALSE, TRUE, TRUE);
+# else
+ incpush(SITELIB_EXP, FALSE, FALSE, TRUE, TRUE);
+# endif
+#endif
+
+#if defined(SITELIB_STEM) && defined(PERL_INC_VERSION_LIST)
+ /* Search for version-specific dirs below here */
+ incpush(SITELIB_STEM, FALSE, TRUE, TRUE, TRUE);
+#endif
+
#ifdef ARCHLIB_EXP
incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE, TRUE);
#endif
@@ -4915,28 +4937,6 @@
incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE, TRUE);
#endif
-#ifdef SITEARCH_EXP
- /* sitearch is always relative to sitelib on Windows for
- * DLL-based path intuition to work correctly */
-# if !defined(WIN32)
- incpush(SITEARCH_EXP, FALSE, FALSE, TRUE, TRUE);
-# endif
-#endif
-
-#ifdef SITELIB_EXP
-# if defined(WIN32)
- /* this picks up sitearch as well */
- incpush(SITELIB_EXP, TRUE, FALSE, TRUE, TRUE);
-# else
- incpush(SITELIB_EXP, FALSE, FALSE, TRUE, TRUE);
-# endif
-#endif
-
-#if defined(SITELIB_STEM) && defined(PERL_INC_VERSION_LIST)
- /* Search for version-specific dirs below here */
- incpush(SITELIB_STEM, FALSE, TRUE, TRUE, TRUE);
-#endif
-
#ifdef PERL_VENDORARCH_EXP
/* vendorarch is always relative to vendorlib on Windows for
* DLL-based path intuition to work correctly */

File diff suppressed because it is too large Load diff

View file

@ -7,7 +7,6 @@
PORTNAME= perl
PORTVERSION= ${PERL_VERSION}
PORTREVISION= 2
CATEGORIES= lang devel perl5
MASTER_SITES= CPAN \
${MASTER_SITE_LOCAL:S/$/:local/} \
@ -21,8 +20,8 @@ DIST_SUBDIR= perl
MAINTAINER= skv@FreeBSD.org
COMMENT= Practical Extraction and Report Language
CONFLICTS= perl-5.6.* perl-5.8.* perl-threaded-5.8.*
MAKE_JOBS_UNSAFE= yes
CONFLICTS= perl-5.6.* perl-5.8.* perl-threaded-5.8.* \
perl-5.10.* perl-threaded-5.10.*
OPTIONS= DEBUGGING "Build with debugging support" off \
GDBM "Build GDBM_File extension" off \
@ -36,7 +35,7 @@ OPTIONS= DEBUGGING "Build with debugging support" off \
PORTSCOUT= limitw:1,even
PERL_VERSION= 5.10.1
PERL_VERSION= 5.12.1
PERL_ARCH= mach
SITE_PERL_REL?= lib/perl5/site_perl/${PERL_VERSION}
SITE_PERL?= ${LOCALBASE}/${SITE_PERL_REL}
@ -148,7 +147,7 @@ LINK_USRBIN= yes
LINK_USRBIN= no
.endif
LATEST_LINK= perl
NO_LATEST_LINK= yes
.if defined(WITH_GDBM)
MAN3+= GDBM_File.3
@ -213,7 +212,7 @@ post-install:
PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
test: build
@(cd ${WRKSRC}; make test)
@(cd ${WRKSRC}; TEST_JOBS=${MAKE_JOBS_NUMBER} make test_harness)
regression-test: test

View file

@ -20,6 +20,14 @@ MAN1+= perl5004delta.1
MAN1+= perl5005delta.1
MAN1+= perl5100delta.1
MAN1+= perl5101delta.1
MAN1+= perl5110delta.1
MAN1+= perl5111delta.1
MAN1+= perl5112delta.1
MAN1+= perl5113delta.1
MAN1+= perl5114delta.1
MAN1+= perl5115delta.1
MAN1+= perl5120delta.1
MAN1+= perl5121delta.1
MAN1+= perl561delta.1
MAN1+= perl56delta.1
MAN1+= perl570delta.1
@ -111,10 +119,8 @@ MAN1+= perllexwarn.1
MAN1+= perllinux.1
MAN1+= perllocale.1
MAN1+= perllol.1
MAN1+= perlmachten.1
MAN1+= perlmacos.1
MAN1+= perlmacosx.1
MAN1+= perlmint.1
MAN1+= perlmod.1
MAN1+= perlmodinstall.1
MAN1+= perlmodlib.1
@ -131,12 +137,12 @@ MAN1+= perlopentut.1
MAN1+= perlos2.1
MAN1+= perlos390.1
MAN1+= perlos400.1
MAN1+= perlothrtut.1
MAN1+= perlpacktut.1
MAN1+= perlperf.1
MAN1+= perlplan9.1
MAN1+= perlpod.1
MAN1+= perlpodspec.1
MAN1+= perlpolicy.1
MAN1+= perlport.1
MAN1+= perlpragma.1
MAN1+= perlqnx.1
@ -172,6 +178,7 @@ MAN1+= perltw.1
MAN1+= perlunicode.1
MAN1+= perlunifaq.1
MAN1+= perluniintro.1
MAN1+= perluniprops.1
MAN1+= perlunitut.1
MAN1+= perlutil.1
MAN1+= perluts.1
@ -202,6 +209,7 @@ MAN1+= splain.1
MAN1+= xsubpp.1
MAN3+= AnyDBM_File.3
MAN3+= App::Cpan.3
MAN3+= App::Prove.3
MAN3+= App::Prove::State.3
MAN3+= App::Prove::State::Result.3
@ -281,7 +289,6 @@ MAN3+= CPANPLUS::Shell::Default::Plugins::HOWTO.3
MAN3+= CPANPLUS::Shell::Default::Plugins::Remote.3
MAN3+= CPANPLUS::Shell::Default::Plugins::Source.3
MAN3+= Carp.3
MAN3+= Carp::Heavy.3
MAN3+= Class::ISA.3
MAN3+= Class::Struct.3
MAN3+= Compress::Raw::Bzip2.3
@ -491,6 +498,7 @@ MAN3+= Module::Build.3
MAN3+= Module::Build::API.3
MAN3+= Module::Build::Authoring.3
MAN3+= Module::Build::Base.3
MAN3+= Module::Build::Bundling.3
MAN3+= Module::Build::Compat.3
MAN3+= Module::Build::ConfigData.3
MAN3+= Module::Build::Cookbook.3
@ -511,7 +519,6 @@ MAN3+= Module::Build::Platform::aix.3
MAN3+= Module::Build::Platform::cygwin.3
MAN3+= Module::Build::Platform::darwin.3
MAN3+= Module::Build::Platform::os2.3
MAN3+= Module::Build::YAML.3
MAN3+= Module::CoreList.3
MAN3+= Module::Load.3
MAN3+= Module::Load::Conditional.3
@ -557,6 +564,9 @@ MAN3+= Pod::Man.3
MAN3+= Pod::ParseLink.3
MAN3+= Pod::ParseUtils.3
MAN3+= Pod::Parser.3
MAN3+= Pod::Perldoc.3
MAN3+= Pod::Perldoc::BaseTo.3
MAN3+= Pod::Perldoc::GetOptsOO.3
MAN3+= Pod::Perldoc::ToChecker.3
MAN3+= Pod::Perldoc::ToMan.3
MAN3+= Pod::Perldoc::ToNroff.3
@ -694,10 +704,10 @@ MAN3+= Unicode::UCD.3
MAN3+= User::grent.3
MAN3+= User::pwent.3
MAN3+= XS::APItest.3
MAN3+= XS::APItest::KeywordRPN.3
MAN3+= XS::Typemap.3
MAN3+= XSLoader.3
MAN3+= attributes.3
MAN3+= attrs.3
MAN3+= autodie.3
MAN3+= autodie::exception.3
MAN3+= autodie::exception::system.3
@ -711,6 +721,7 @@ MAN3+= blib.3
MAN3+= bytes.3
MAN3+= charnames.3
MAN3+= constant.3
MAN3+= deprecate.3
MAN3+= diagnostics.3
MAN3+= encoding.3
MAN3+= encoding::warnings.3
@ -718,6 +729,7 @@ MAN3+= feature.3
MAN3+= fields.3
MAN3+= filetest.3
MAN3+= if.3
MAN3+= inc::latest.3
MAN3+= integer.3
MAN3+= less.3
MAN3+= lib.3
@ -742,4 +754,3 @@ MAN3+= version::Internals.3
MAN3+= vmsish.3
MAN3+= warnings.3
MAN3+= warnings::register.3

View file

@ -1,6 +1,6 @@
MD5 (perl/perl-5.10.1.tar.bz2) = 82400c6d34f7b7b43d0196c76cd2bbb1
SHA256 (perl/perl-5.10.1.tar.bz2) = 9385f2c8c2ca8b1dc4a7c31903f1f8dc8f2ba867dc2a9e5c93012ed6b564e826
SIZE (perl/perl-5.10.1.tar.bz2) = 11608061
MD5 (perl/perl-5.12.1.tar.bz2) = f7f2d7f5aaac15a75028381b159a560f
SHA256 (perl/perl-5.12.1.tar.bz2) = e9189f09447b2b90a1d186b418f91e583eba41eec238e8f5b8730f71d5fc1ec5
SIZE (perl/perl-5.12.1.tar.bz2) = 12296076
MD5 (perl/BSDPAN-5.12.1_20100713.tar.bz2) = 2dcad380d91c60aaa4ac6db29d997712
SHA256 (perl/BSDPAN-5.12.1_20100713.tar.bz2) = f700acc5ca29c6ef94460d23acffde77834e883cdb7cd043dbdb7c7d709a9392
SIZE (perl/BSDPAN-5.12.1_20100713.tar.bz2) = 8430

View file

@ -1,5 +1,5 @@
--- lib/ExtUtils/t/INST_PREFIX.t.orig Wed Feb 15 12:46:31 2006
+++ lib/ExtUtils/t/INST_PREFIX.t Wed Feb 15 12:46:52 2006
--- cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t.orig Wed Feb 15 12:46:31 2006
+++ cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t Wed Feb 15 12:46:52 2006
@@ -16,7 +16,7 @@ BEGIN {
}

View file

@ -1,5 +1,5 @@
--- lib/ExtUtils/MM_Any.pm.orig Wed Feb 15 12:20:43 2006
+++ lib/ExtUtils/MM_Any.pm Wed Feb 15 12:22:29 2006
--- cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm.orig Wed Feb 15 12:20:43 2006
+++ cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm Wed Feb 15 12:22:29 2006
@@ -1069,13 +1069,14 @@ sub init_INSTALL_from_PREFIX {
('$(PREFIX)') x 3;
}

View file

@ -1,95 +0,0 @@
# http://rt.perl.org/rt3//Public/Bug/Display.html?id=69973
# http://perl5.git.perl.org/perl.git/commitdiff_plain/0abd0d78a73da1c4d13b1c700526b7e5d03b32d4?hp=fe88edf0c4ada4230b84bdb5417029b8f766694a
diff --git a/ext/re/t/regop.t b/ext/re/t/regop.t
index 9118bf6..46e6ec0 100644
--- ext/re/t/regop.t
+++ ext/re/t/regop.t
@@ -231,12 +231,12 @@ anchored "ABC" at 0
#Freeing REx: "(\\.COM|\\.EXE|\\.BAT|\\.CMD|\\.VBS|\\.VBE|\\.JS|\\.JSE|\\."......
%MATCHED%
floating ""$ at 3..4 (checking floating)
-1:1[1] 3:2[1] 5:2[64] 45:83[1] 47:84[1] 48:85[0]
-stclass EXACTF <.> minlen 3
-Found floating substr ""$ at offset 30...
-Does not contradict STCLASS...
-Guessed: match at offset 26
-Matching stclass EXACTF <.> against ".exe"
+#1:1[1] 3:2[1] 5:2[64] 45:83[1] 47:84[1] 48:85[0]
+#stclass EXACTF <.> minlen 3
+#Found floating substr ""$ at offset 30...
+#Does not contradict STCLASS...
+#Guessed: match at offset 26
+#Matching stclass EXACTF <.> against ".exe"
---
#Compiling REx "[q]"
#size 12 nodes Got 100 bytes for offset annotations.
diff --git a/regcomp.c b/regcomp.c
index 6e9fa26..eb5f12f 100644
--- regcomp.c
+++ regcomp.c
@@ -2833,13 +2833,18 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp,
}
} else {
/*
- Currently we assume that the trie can handle unicode and ascii
- matches fold cased matches. If this proves true then the following
- define will prevent tries in this situation.
-
- #define TRIE_TYPE_IS_SAFE (UTF || optype==EXACT)
-*/
+ Currently we do not believe that the trie logic can
+ handle case insensitive matching properly when the
+ pattern is not unicode (thus forcing unicode semantics).
+
+ If/when this is fixed the following define can be swapped
+ in below to fully enable trie logic.
+
#define TRIE_TYPE_IS_SAFE 1
+
+*/
+#define TRIE_TYPE_IS_SAFE (UTF || optype==EXACT)
+
if ( last && TRIE_TYPE_IS_SAFE ) {
make_trie( pRExC_state,
startbranch, first, cur, tail, count,
diff --git a/regexec.c b/regexec.c
index 402ede3..ec09c28 100644
--- regexec.c
+++ regexec.c
@@ -1105,16 +1105,15 @@ Perl_re_intuit_start(pTHX_ REGEXP * const rx, SV *sv, char *strpos,
#define REXEC_TRIE_READ_CHAR(trie_type, trie, widecharmap, uc, uscan, len, \
uvc, charid, foldlen, foldbuf, uniflags) STMT_START { \
- UV uvc_unfolded = 0; \
switch (trie_type) { \
case trie_utf8_fold: \
if ( foldlen>0 ) { \
- uvc_unfolded = uvc = utf8n_to_uvuni( uscan, UTF8_MAXLEN, &len, uniflags ); \
+ uvc = utf8n_to_uvuni( uscan, UTF8_MAXLEN, &len, uniflags ); \
foldlen -= len; \
uscan += len; \
len=0; \
} else { \
- uvc_unfolded = uvc = utf8n_to_uvuni( (U8*)uc, UTF8_MAXLEN, &len, uniflags ); \
+ uvc = utf8n_to_uvuni( (U8*)uc, UTF8_MAXLEN, &len, uniflags ); \
uvc = to_uni_fold( uvc, foldbuf, &foldlen ); \
foldlen -= UNISKIP( uvc ); \
uscan = foldbuf + UNISKIP( uvc ); \
@@ -1140,7 +1139,6 @@ uvc, charid, foldlen, foldbuf, uniflags) STMT_START { \
uvc = (UV)*uc; \
len = 1; \
} \
- \
if (uvc < 256) { \
charid = trie->charmap[ uvc ]; \
} \
@@ -1153,9 +1151,6 @@ uvc, charid, foldlen, foldbuf, uniflags) STMT_START { \
charid = (U16)SvIV(*svpp); \
} \
} \
- if (!charid && trie_type == trie_utf8_fold && !UTF) { \
- charid = trie->charmap[uvc_unfolded]; \
- } \
} STMT_END
#define REXEC_FBC_EXACTISH_CHECK(CoNd) \

View file

@ -1,46 +0,0 @@
# http://rt.perl.org/rt3/Public/Bug/Display.html?id=71952
# http://perl5.git.perl.org/perl.git/commitdiff_plain/1f15e670edb515b744e9021b4a42a7955da83093?hp=1f730e6c11736bad913e605b064200a67117e898
diff --git a/sv.c b/sv.c
index 4e80e18..a3eb187 100644
--- sv.c
+++ sv.c
@@ -5664,7 +5664,8 @@ Perl_sv_clear(pTHX_ register SV *const sv)
&& !CvCONST(destructor)
/* Don't bother calling an empty destructor */
&& (CvISXSUB(destructor)
- || CvSTART(destructor)->op_next->op_type != OP_LEAVESUB))
+ || (CvSTART(destructor)
+ && (CvSTART(destructor)->op_next->op_type != OP_LEAVESUB))))
{
SV* const tmpref = newRV(sv);
SvREADONLY_on(tmpref); /* DESTROY() could be naughty */
diff --git a/t/op/method.t b/t/op/method.t
index afa8cfb..b602ca2 100644
--- t/op/method.t
+++ t/op/method.t
@@ -10,7 +10,7 @@ BEGIN {
require "test.pl";
}
-print "1..78\n";
+print "1..79\n";
@A::ISA = 'B';
@B::ISA = 'C';
@@ -292,3 +292,16 @@ EOT
"check if UNIVERSAL::AUTOLOAD works",
);
}
+
+# Test for #71952: crash when looking for a nonexistent destructor
+# Regression introduced by fbb3ee5af3d4
+{
+ fresh_perl_is(<<'EOT',
+sub M::DESTROY; bless {}, "M" ; print "survived\n";
+EOT
+ "survived",
+ {},
+ "no crash with a declared but missing DESTROY method"
+ );
+}
+

View file

@ -1,61 +0,0 @@
--- perl.c
+++ perl.c
#else /* IAMSUID */
@@ -4882,6 +4882,28 @@
incpush(APPLLIB_EXP, TRUE, TRUE, TRUE, TRUE);
#endif
+#ifdef SITEARCH_EXP
+ /* sitearch is always relative to sitelib on Windows for
+ * DLL-based path intuition to work correctly */
+# if !defined(WIN32)
+ incpush(SITEARCH_EXP, FALSE, FALSE, TRUE, TRUE);
+# endif
+#endif
+
+#ifdef SITELIB_EXP
+# if defined(WIN32)
+ /* this picks up sitearch as well */
+ incpush(SITELIB_EXP, TRUE, FALSE, TRUE, TRUE);
+# else
+ incpush(SITELIB_EXP, FALSE, FALSE, TRUE, TRUE);
+# endif
+#endif
+
+#if defined(SITELIB_STEM) && defined(PERL_INC_VERSION_LIST)
+ /* Search for version-specific dirs below here */
+ incpush(SITELIB_STEM, FALSE, TRUE, TRUE, TRUE);
+#endif
+
#ifdef ARCHLIB_EXP
incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE, TRUE);
#endif
@@ -4915,28 +4937,6 @@
incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE, TRUE);
#endif
-#ifdef SITEARCH_EXP
- /* sitearch is always relative to sitelib on Windows for
- * DLL-based path intuition to work correctly */
-# if !defined(WIN32)
- incpush(SITEARCH_EXP, FALSE, FALSE, TRUE, TRUE);
-# endif
-#endif
-
-#ifdef SITELIB_EXP
-# if defined(WIN32)
- /* this picks up sitearch as well */
- incpush(SITELIB_EXP, TRUE, FALSE, TRUE, TRUE);
-# else
- incpush(SITELIB_EXP, FALSE, FALSE, TRUE, TRUE);
-# endif
-#endif
-
-#if defined(SITELIB_STEM) && defined(PERL_INC_VERSION_LIST)
- /* Search for version-specific dirs below here */
- incpush(SITELIB_STEM, FALSE, TRUE, TRUE, TRUE);
-#endif
-
#ifdef PERL_VENDORARCH_EXP
/* vendorarch is always relative to vendorlib on Windows for
* DLL-based path intuition to work correctly */

File diff suppressed because it is too large Load diff

View file

@ -25,7 +25,8 @@ PATCHFILES= defined-or-${PERL_VERSION}.bz2
MAINTAINER= skv@FreeBSD.org
COMMENT= Practical Extraction and Report Language
CONFLICTS= perl-5.6.* perl-5.10.* perl-threaded-5.10.*
CONFLICTS= perl-5.6.* perl-5.10.* perl-threaded-5.10.* \
perl-5.12.* perl-threaded-5.12.*
OPTIONS= DEBUGGING "Build with debugging support" off \
GDBM "Build GDBM_File extension" off \