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.

Reply via email to