Change 11696 by jhi@alpha on 2001/08/17 01:50:01
Subject: Re: [ID 20010814.004] pos() doesn't work when using =~m// in list
context
From: Hugo van der Sanden <[EMAIL PROTECTED]>
Date: Thu, 16 Aug 2001 18:50:01 +0100
Message-Id: <[EMAIL PROTECTED]>
Affected files ...
... //depot/perl/pp_hot.c#250 edit
... //depot/perl/t/op/pat.t#113 edit
Differences ...
==== //depot/perl/pp_hot.c#250 (text) ====
Index: perl/pp_hot.c
--- perl/pp_hot.c.~1~ Thu Aug 16 20:00:06 2001
+++ perl/pp_hot.c Thu Aug 16 20:00:06 2001
@@ -1336,6 +1336,22 @@
}
}
if (global) {
+ if (pm->op_pmflags & PMf_CONTINUE) {
+ MAGIC* mg = 0;
+ if (SvTYPE(TARG) >= SVt_PVMG && SvMAGIC(TARG))
+ mg = mg_find(TARG, PERL_MAGIC_regex_global);
+ if (!mg) {
+ sv_magic(TARG, (SV*)0, PERL_MAGIC_regex_global, Nullch, 0);
+ mg = mg_find(TARG, PERL_MAGIC_regex_global);
+ }
+ if (rx->startp[0] != -1) {
+ mg->mg_len = rx->endp[0];
+ if (rx->startp[0] == rx->endp[0])
+ mg->mg_flags |= MGf_MINMATCH;
+ else
+ mg->mg_flags &= ~MGf_MINMATCH;
+ }
+ }
had_zerolen = (rx->startp[0] != -1
&& rx->startp[0] == rx->endp[0]);
PUTBACK; /* EVAL blocks may use stack */
==== //depot/perl/t/op/pat.t#113 (xtext) ====
Index: perl/t/op/pat.t
--- perl/t/op/pat.t.~1~ Thu Aug 16 20:00:06 2001
+++ perl/t/op/pat.t Thu Aug 16 20:00:06 2001
@@ -6,7 +6,7 @@
$| = 1;
-print "1..683\n";
+print "1..684\n";
BEGIN {
chdir 't' if -d 't';
@@ -1979,3 +1979,11 @@
@a = ("foo\n\x{100}bar" =~ /\C/gs);
print "ok 683\n" if @a == 9 && "@a" eq "f o o \n $a $b b a r";
+{
+ # [ID 20010814.004] pos() doesn't work when using =~m// in list context
+ $_ = "ababacadaea";
+ $a = join ":", /b./gc;
+ $b = join ":", /a./gc;
+ $c = pos;
+ print "$a $b $c" eq 'ba:ba ad:ae 10' ? "ok 684\n" : "not ok 684\t# $a $b $c\n";
+}
End of Patch.