[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]

Change 30638 introduces regression



Change 30638 by nicholas@nicholas-saigo on 2007/03/19 19:57:29

==== //depot/maint-5.8/perl/regexec.c#94 (text) ====

@@ -3473,8 +3473,9 @@
 				sayNO;
 			}
 			/* PL_reginput == locinput now */
+			PL_reginput = locinput; /* Could be reset... */
 			TRYPAREN(paren, ln, locinput);
-			PL_reginput = locinput;	/* Could be reset... */
+
 			REGCP_UNWIND(lastcp);
 			/* Couldn't or didn't -- move forward. */
 			old = locinput;



introduces a regression in 5.8.x. The same code in blead (28417) does not.

Minimal test case is

#!/usr/bin/perl -w
use strict;

$_ = "io\n io";

print /^\s*i.*?o\s*$/s ? "ok\n" : "not ok\n";
__END__


diff-ing the output of -Dr, I get:

$ diff -u fails  works
--- fails       2008-09-16 21:25:45.000000000 +0100
+++ works       2008-09-16 21:25:47.000000000 +0100
@@ -53,8 +53,16 @@
  > <io>          | 13:        SEOL
                                   failed...
                                 failed...
-                           SANY can match 3 times out of 4...
-                              failed...
-                            failed...
-Match failed
+                           SANY can match 4 times out of 4...
+   5 <io
+ i> <o>          |  9:      EXACT <o>
+   6 <io
+ io> <>          | 11:      STAR
+                           SPACE can match 0 times out of 2147483647...
+  Setting an EVAL scope, savestack=6
+   6 <io
+ io> <>          | 13:        SEOL
+   6 <io
+ io> <>          | 14:        END
+Match successful!
 Freeing REx: `"^\\s*i.*?o\\s*$"'


Any clues as to what is going wrong here?

Nicholas Clark


Follow-Ups from:
Dave Mitchell <davem@iabyn.com>

[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]