[perl #19049] Incorrect $` after replacement
Andreas König [Fri, 4 Nov 2005 08:17:25 +0000 (09:17 +0100)]
Message-ID: <87fyqc51bu.fsf@k75.linux.bogus>

p4raw-id: //depot/perl@25993

regexec.c
t/op/pat.t

index e058216..d4ec7c2 100644 (file)
--- a/regexec.c
+++ b/regexec.c
@@ -2177,7 +2177,7 @@ S_regtry(pTHX_ regexp *prog, char *startpos)
        prog->subbeg = PL_bostr;
        prog->sublen = PL_regeol - PL_bostr; /* strend may have been modified */
     }
-    prog->startp[0] = startpos - PL_bostr;
+    /* prog->startp[0] = startpos - PL_bostr; */
     PL_reginput = startpos;
     PL_regstartp = prog->startp;
     PL_regendp = prog->endp;
@@ -2221,6 +2221,7 @@ S_regtry(pTHX_ regexp *prog, char *startpos)
 #endif
     REGCP_SET(lastcp);
     if (regmatch(prog->program + 1)) {
+       prog->startp[0] = startpos - PL_bostr;
        prog->endp[0] = PL_reginput - PL_bostr;
        return 1;
     }
index 10ecaf8..a8d8e3b 100755 (executable)
@@ -3196,7 +3196,7 @@ $_ = "x"; s/x/func "in multiline subst"/em;
 # bug #19049
 $_="abcdef\n";
 @x = m/./g;
-ok("abcde" eq "$`", '# TODO #19049 - global match not setting $`');
+ok("abcde" eq "$`", '#19049 - global match not setting $`');
 
 ok("123\x{100}" =~ /^.*1.*23\x{100}$/, 'uft8 + multiple floating substr');
 
@@ -3390,7 +3390,7 @@ ok(("foba  ba$s" =~ qr/(foo|BaSS|bar)/i)
     $s = $1;
     $s = $2;
     ok($s eq 'cd',
-       "# TODO assigning to original string should not corrupt match vars");
+       "# assigning to original string should not corrupt match vars");
 }
 
 # last test 1187