This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
regcomp.c: Fix recent optimization of [...] bug
authorKarl Williamson <khw@cpan.org>
Wed, 30 Jan 2019 22:00:30 +0000 (15:00 -0700)
committerKarl Williamson <khw@cpan.org>
Tue, 5 Feb 2019 04:00:49 +0000 (21:00 -0700)
This bug was introduced in b2296192536090829ba6d2cb367456f4e346dcc6
n 5.29.7.  Using /il should not result in looking for a [:posix:] class
that matches the code points given.

regcomp.c
t/re/anyof.t

index 58cb941..4937292 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -18815,7 +18815,7 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
             }
         }
 
-        if (! posixl) {
+        if (! (anyof_flags & ANYOF_LOCALE_FLAGS)) {
             PERL_UINT_FAST8_T type;
             SV * intersection = NULL;
             SV* d_invlist = NULL;
index ad0a2d9..32e0bae 100644 (file)
@@ -462,6 +462,7 @@ my @tests = (
     '(?l:[\x{212A}])' => 'ANYOFL[212A]',
     '(?l:[\s\x{212A}])' => 'ANYOFPOSIXL[\s][1680 2000-200A 2028-2029 202F 205F 212A 3000]',
     '(?l:[^\S\x{202F}])' => 'ANYOFPOSIXL[^\\S][1680 2000-200A 2028-2029 205F 3000]',
+    '(?li:[a-z])' => 'ANYOFL{i}[a-z{utf8 locale}A-Z\x{017F}\x{212A}]',
 
     '\p{All}' => 'SANY',
     '\P{All}' => 'OPFAIL',