summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--regexec.c5
-rwxr-xr-xt/op/pat.t9
2 files changed, 12 insertions, 2 deletions
diff --git a/regexec.c b/regexec.c
index 4a674a8b75..0bd9da8b20 100644
--- a/regexec.c
+++ b/regexec.c
@@ -639,7 +639,10 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
/* Even in this situation we may use MBOL flag if strpos is offset
wrt the start of the string. */
if (ml_anch && sv
- && (strpos + SvCUR(sv) != strend) && strpos[-1] != '\n') {
+ && (strpos + SvCUR(sv) != strend) && strpos[-1] != '\n'
+ /* May be due to an implicit anchor of m{.*foo} */
+ && !(prog->reganch & ROPT_IMPLICIT))
+ {
t = strpos;
goto find_anchor;
}
diff --git a/t/op/pat.t b/t/op/pat.t
index 5c564aa719..9f685502f2 100755
--- a/t/op/pat.t
+++ b/t/op/pat.t
@@ -4,7 +4,7 @@
# the format supported by op/regexp.t. If you want to add a test
# that does fit that format, add it to op/re_tests, not here.
-print "1..194\n";
+print "1..195\n";
BEGIN {
chdir 't' if -d 't';
@@ -898,3 +898,10 @@ $text = "xA\n" x 500;
$text =~ /^\s*A/m and print 'not ';
print "ok $test\n";
$test++;
+
+$text = "abc dbf";
+@res = ($text =~ /.*?(b).*?\b/g);
+"@res" eq 'b b' or print 'not ';
+print "ok $test\n";
+$test++;
+