PATCH: [perl #113750] re.pm clobbers $_
authorKarl Williamson <public@khwilliamson.com>
Wed, 20 Jun 2012 19:13:02 +0000 (13:13 -0600)
committerRicardo Signes <rjbs@cpan.org>
Sun, 24 Jun 2012 22:28:57 +0000 (18:28 -0400)
Thanks to Jesse Luehrs and Father Chrysostomos for testing advice.

(cherry-picked from commit 48895a0d16aef33c200bc9a07f22e18c23597c2a)

Conflicts:

ext/re/re.pm
pod/perldelta.pod

ext/re/re.pm
ext/re/t/re.t

index 9111129..5ce9801 100644 (file)
@@ -4,7 +4,7 @@ package re;
 use strict;
 use warnings;
 
-our $VERSION     = "0.19";
+our $VERSION     = "0.19_01";
 our @ISA         = qw(Exporter);
 our @EXPORT_OK   = ('regmust',
                     qw(is_regexp regexp_pattern
@@ -142,7 +142,7 @@ sub bits {
            my $reflags = $^H{reflags} || 0;
            my $seen_charset;
            while ($s =~ m/( . )/gx) {
-                $_ = $1;
+                local $_ = $1;
                if (/[adul]/) {
                     # The 'a' may be repeated; hide this from the rest of the
                     # code by counting and getting rid of all of them, then
index 5fbf3fd..13498bb 100644 (file)
@@ -10,7 +10,7 @@ BEGIN {
 
 use strict;
 
-use Test::More tests => 14;
+use Test::More tests => 15;
 require_ok( 're' );
 
 # setcolor
@@ -63,6 +63,11 @@ my $ok='foo'=~/$reg/;
 eval"no re Debug=>'ALL'";
 ok( $ok, 'No segv!' );
 
+my $message = "Don't tread on me";
+$_ = $message;
+re->import("/aa");
+is($_, $message, "re doesn't clobber \$_");
+
 package Term::Cap;
 
 sub Tgetent {