summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Zakharevich <ilya@math.berkeley.edu>1999-09-29 14:29:52 -0400
committerJarkko Hietaniemi <jhi@iki.fi>1999-09-30 08:13:40 +0000
commitd39bda52bf2a9b53e6d633ed28f3354ef5b6ccac (patch)
tree649aa67081a6e85ed8246c8fd19b8f9d13f1c580
parent3cb4da910f036fdb687a5ae3beba6bbf54509116 (diff)
downloadperl-d39bda52bf2a9b53e6d633ed28f3354ef5b6ccac.tar.gz
(Removed by #4262.)
To: desar@club-internet.fr (François Désarménien) Cc: perl5-porters@perl.org (perl5-porters@perl.org) Subject: Re: Strange RE engine breakage in 5_61 Message-Id: <199909292229.SAA18917@monk.mps.ohio-state.edu> p4raw-id: //depot/cfgperl@4252
-rw-r--r--regexec.c22
-rw-r--r--t/op/re_tests1
2 files changed, 14 insertions, 9 deletions
diff --git a/regexec.c b/regexec.c
index a567353311..698142450e 100644
--- a/regexec.c
+++ b/regexec.c
@@ -739,19 +739,23 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
/* If there is a "must appear" string, look for it. */
s = startpos;
- if (prog->reganch & ROPT_GPOS_SEEN) {
+ if (prog->reganch & ROPT_GPOS_SEEN) { /* Need to have PL_reg_ganch */
MAGIC *mg;
- if (!(flags & REXEC_IGNOREPOS) && sv && SvTYPE(sv) >= SVt_PVMG
- && SvMAGIC(sv) && (mg = mg_find(sv, 'g')) && mg->mg_len >= 0)
- PL_reg_ganch = strbeg + mg->mg_len;
- else
+ if (flags & REXEC_IGNOREPOS)
PL_reg_ganch = startpos;
- if (prog->reganch & ROPT_ANCH_GPOS) {
- if (s > PL_reg_ganch)
- goto phooey;
- s = PL_reg_ganch;
+ else if (sv && SvTYPE(sv) >= SVt_PVMG
+ && SvMAGIC(sv)
+ && (mg = mg_find(sv, 'g')) && mg->mg_len >= 0) {
+ PL_reg_ganch = strbeg + mg->mg_len; /* Defined pos() */
+ if (prog->reganch & ROPT_ANCH_GPOS) {
+ if (s > PL_reg_ganch)
+ goto phooey;
+ s = PL_reg_ganch;
+ }
}
+ else
+ PL_reg_ganch = strbeg;
}
if (!(flags & REXEC_CHECKED) && prog->check_substr != Nullsv) {
diff --git a/t/op/re_tests b/t/op/re_tests
index b35e964dc1..e89945401f 100644
--- a/t/op/re_tests
+++ b/t/op/re_tests
@@ -739,3 +739,4 @@ tt+$ xxxtt y - -
[\w-z] - c - /[\w-z]/: invalid [] range in regexp
[0-[:digit:]] - c - /[0-[:digit:]]/: invalid [] range in regexp
[[:digit:]-9] - c - /[[:digit:]-9]/: invalid [] range in regexp
+\GX.X aaaXbX n - -