mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-28 01:06:17 +00:00
- Add patches for RT 69973 [1], RT 71952 [2]
- Update P5PORTER mode [3] - Update CONFLICTS for Perl 5.12 Pointed by: a.smith xx ukgrid.net [1] PR: ports/144717 [2], ports/142110 [3] Submitted by: Bryan Fullerton <bryanf@samuraiconsulting.ca> [2], Alex Deiter <alex.deiter xx gmail.com> [3]
This commit is contained in:
parent
457022d028
commit
6255bf69e0
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=253832
@ -7,6 +7,7 @@
|
||||
|
||||
PORTNAME= perl
|
||||
PORTVERSION= ${PERL_VERSION}
|
||||
PORTREVISON= 1
|
||||
CATEGORIES= lang devel perl5
|
||||
MASTER_SITES= CPAN \
|
||||
${MASTER_SITE_LOCAL:S/$/:local/} \
|
||||
@ -159,7 +160,7 @@ BSDPAN_FILES= BSDPAN.pm BSDPAN/Override.pm Config.pm \
|
||||
ExtUtils/MM_Unix.pm \
|
||||
ExtUtils/MakeMaker.pm \
|
||||
ExtUtils/Packlist.pm
|
||||
BSDPAN_VERSION= ${PORTVERSION}_20090303
|
||||
BSDPAN_VERSION= 5.12.0_20100422
|
||||
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-${BSDPAN_VERSION}
|
||||
|
||||
PKGINSTALL= ${WRKDIR}/pkg-install
|
||||
|
@ -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/BSDPAN-5.10.1_20090303.tar.bz2) = e8d27425aec2c15778963e260d24b44e
|
||||
SHA256 (perl/BSDPAN-5.10.1_20090303.tar.bz2) = 84d0a016f80bea4b081e5688542f3d70acdebd5bbaaa7f32ea88d6f26839b502
|
||||
SIZE (perl/BSDPAN-5.10.1_20090303.tar.bz2) = 8193
|
||||
MD5 (perl/BSDPAN-5.12.0_20100422.tar.bz2) = 16918568ae943b416b36196f47015a34
|
||||
SHA256 (perl/BSDPAN-5.12.0_20100422.tar.bz2) = 9bbcb4056c9c80c572acdff24319fa9a3b9a2c368ea59dfecb84e965d82f93d9
|
||||
SIZE (perl/BSDPAN-5.12.0_20100422.tar.bz2) = 8301
|
||||
|
95
lang/perl5.10/files/patch-bug69973
Normal file
95
lang/perl5.10/files/patch-bug69973
Normal file
@ -0,0 +1,95 @@
|
||||
# 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) \
|
46
lang/perl5.10/files/patch-bug71952
Normal file
46
lang/perl5.10/files/patch-bug71952
Normal file
@ -0,0 +1,46 @@
|
||||
# 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"
|
||||
+ );
|
||||
+}
|
||||
+
|
@ -7,6 +7,7 @@
|
||||
|
||||
PORTNAME= perl
|
||||
PORTVERSION= ${PERL_VERSION}
|
||||
PORTREVISON= 1
|
||||
CATEGORIES= lang devel perl5
|
||||
MASTER_SITES= CPAN \
|
||||
${MASTER_SITE_LOCAL:S/$/:local/} \
|
||||
@ -159,7 +160,7 @@ BSDPAN_FILES= BSDPAN.pm BSDPAN/Override.pm Config.pm \
|
||||
ExtUtils/MM_Unix.pm \
|
||||
ExtUtils/MakeMaker.pm \
|
||||
ExtUtils/Packlist.pm
|
||||
BSDPAN_VERSION= ${PORTVERSION}_20090303
|
||||
BSDPAN_VERSION= 5.12.0_20100422
|
||||
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-${BSDPAN_VERSION}
|
||||
|
||||
PKGINSTALL= ${WRKDIR}/pkg-install
|
||||
|
@ -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/BSDPAN-5.10.1_20090303.tar.bz2) = e8d27425aec2c15778963e260d24b44e
|
||||
SHA256 (perl/BSDPAN-5.10.1_20090303.tar.bz2) = 84d0a016f80bea4b081e5688542f3d70acdebd5bbaaa7f32ea88d6f26839b502
|
||||
SIZE (perl/BSDPAN-5.10.1_20090303.tar.bz2) = 8193
|
||||
MD5 (perl/BSDPAN-5.12.0_20100422.tar.bz2) = 16918568ae943b416b36196f47015a34
|
||||
SHA256 (perl/BSDPAN-5.12.0_20100422.tar.bz2) = 9bbcb4056c9c80c572acdff24319fa9a3b9a2c368ea59dfecb84e965d82f93d9
|
||||
SIZE (perl/BSDPAN-5.12.0_20100422.tar.bz2) = 8301
|
||||
|
95
lang/perl5.12/files/patch-bug69973
Normal file
95
lang/perl5.12/files/patch-bug69973
Normal file
@ -0,0 +1,95 @@
|
||||
# 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) \
|
46
lang/perl5.12/files/patch-bug71952
Normal file
46
lang/perl5.12/files/patch-bug71952
Normal file
@ -0,0 +1,46 @@
|
||||
# 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"
|
||||
+ );
|
||||
+}
|
||||
+
|
@ -7,6 +7,7 @@
|
||||
|
||||
PORTNAME= perl
|
||||
PORTVERSION= ${PERL_VERSION}
|
||||
PORTREVISON= 1
|
||||
CATEGORIES= lang devel perl5
|
||||
MASTER_SITES= CPAN \
|
||||
${MASTER_SITE_LOCAL:S/$/:local/} \
|
||||
@ -159,7 +160,7 @@ BSDPAN_FILES= BSDPAN.pm BSDPAN/Override.pm Config.pm \
|
||||
ExtUtils/MM_Unix.pm \
|
||||
ExtUtils/MakeMaker.pm \
|
||||
ExtUtils/Packlist.pm
|
||||
BSDPAN_VERSION= ${PORTVERSION}_20090303
|
||||
BSDPAN_VERSION= 5.12.0_20100422
|
||||
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-${BSDPAN_VERSION}
|
||||
|
||||
PKGINSTALL= ${WRKDIR}/pkg-install
|
||||
|
@ -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/BSDPAN-5.10.1_20090303.tar.bz2) = e8d27425aec2c15778963e260d24b44e
|
||||
SHA256 (perl/BSDPAN-5.10.1_20090303.tar.bz2) = 84d0a016f80bea4b081e5688542f3d70acdebd5bbaaa7f32ea88d6f26839b502
|
||||
SIZE (perl/BSDPAN-5.10.1_20090303.tar.bz2) = 8193
|
||||
MD5 (perl/BSDPAN-5.12.0_20100422.tar.bz2) = 16918568ae943b416b36196f47015a34
|
||||
SHA256 (perl/BSDPAN-5.12.0_20100422.tar.bz2) = 9bbcb4056c9c80c572acdff24319fa9a3b9a2c368ea59dfecb84e965d82f93d9
|
||||
SIZE (perl/BSDPAN-5.12.0_20100422.tar.bz2) = 8301
|
||||
|
95
lang/perl5.14/files/patch-bug69973
Normal file
95
lang/perl5.14/files/patch-bug69973
Normal file
@ -0,0 +1,95 @@
|
||||
# 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) \
|
46
lang/perl5.14/files/patch-bug71952
Normal file
46
lang/perl5.14/files/patch-bug71952
Normal file
@ -0,0 +1,46 @@
|
||||
# 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"
|
||||
+ );
|
||||
+}
|
||||
+
|
@ -7,6 +7,7 @@
|
||||
|
||||
PORTNAME= perl
|
||||
PORTVERSION= ${PERL_VERSION}
|
||||
PORTREVISON= 1
|
||||
CATEGORIES= lang devel perl5
|
||||
MASTER_SITES= CPAN \
|
||||
${MASTER_SITE_LOCAL:S/$/:local/} \
|
||||
@ -159,7 +160,7 @@ BSDPAN_FILES= BSDPAN.pm BSDPAN/Override.pm Config.pm \
|
||||
ExtUtils/MM_Unix.pm \
|
||||
ExtUtils/MakeMaker.pm \
|
||||
ExtUtils/Packlist.pm
|
||||
BSDPAN_VERSION= ${PORTVERSION}_20090303
|
||||
BSDPAN_VERSION= 5.12.0_20100422
|
||||
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-${BSDPAN_VERSION}
|
||||
|
||||
PKGINSTALL= ${WRKDIR}/pkg-install
|
||||
|
@ -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/BSDPAN-5.10.1_20090303.tar.bz2) = e8d27425aec2c15778963e260d24b44e
|
||||
SHA256 (perl/BSDPAN-5.10.1_20090303.tar.bz2) = 84d0a016f80bea4b081e5688542f3d70acdebd5bbaaa7f32ea88d6f26839b502
|
||||
SIZE (perl/BSDPAN-5.10.1_20090303.tar.bz2) = 8193
|
||||
MD5 (perl/BSDPAN-5.12.0_20100422.tar.bz2) = 16918568ae943b416b36196f47015a34
|
||||
SHA256 (perl/BSDPAN-5.12.0_20100422.tar.bz2) = 9bbcb4056c9c80c572acdff24319fa9a3b9a2c368ea59dfecb84e965d82f93d9
|
||||
SIZE (perl/BSDPAN-5.12.0_20100422.tar.bz2) = 8301
|
||||
|
95
lang/perl5.16/files/patch-bug69973
Normal file
95
lang/perl5.16/files/patch-bug69973
Normal file
@ -0,0 +1,95 @@
|
||||
# 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) \
|
46
lang/perl5.16/files/patch-bug71952
Normal file
46
lang/perl5.16/files/patch-bug71952
Normal file
@ -0,0 +1,46 @@
|
||||
# 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"
|
||||
+ );
|
||||
+}
|
||||
+
|
Loading…
Reference in New Issue
Block a user