diff options
-rw-r--r-- | regcomp.c | 4 | ||||
-rw-r--r-- | t/op/taint.t | 10 |
2 files changed, 11 insertions, 3 deletions
@@ -8955,8 +8955,8 @@ parseit: /* (A locale node can have 1 point and be folded; all the other folds * will include the fold, hence will have 2 points, so we won't get - * here with FOLD set unless it is also locale) */ - ret = reg_node(pRExC_state, (U8) (! FOLD) + * here with ANYOF_FOLD set unless it is also locale) */ + ret = reg_node(pRExC_state, (U8) (! (ANYOF_FLAGS(ret) & ANYOF_FOLD)) ? EXACT : EXACTFL ); diff --git a/t/op/taint.t b/t/op/taint.t index 0decc97461..78b3d5591f 100644 --- a/t/op/taint.t +++ b/t/op/taint.t @@ -17,7 +17,7 @@ use Config; use File::Spec::Functions; BEGIN { require './test.pl'; } -plan tests => 336; +plan tests => 338; $| = 1; @@ -1437,6 +1437,14 @@ end ok(tainted($^A), "tainted formline picture makes a tainted accumulator"); } +{ # Bug #80610 + "Constant(1)" =~ / ^ ([a-z_]\w*) (?: [(] (.*) [)] )? $ /xi; + my $a = $1; + my $b = $2; + ok(! tainted($a), "regex optimization of single char /[]/i doesn't taint"); + ok(! tainted($b), "regex optimization of single char /[]/i doesn't taint"); +} + # This may bomb out with the alarm signal so keep it last SKIP: { skip "No alarm()" unless $Config{d_alarm}; |