diff options
-rw-r--r-- | pod/perldelta.pod | 7 | ||||
-rw-r--r-- | regcomp.c | 6 | ||||
-rw-r--r-- | t/re/re_tests | 3 |
3 files changed, 16 insertions, 0 deletions
diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 33b9af48ea..9920e1e52a 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -717,6 +717,13 @@ C</[[:ascii:]]/> and C</[[:blank:]]/> now use locale rules under C<use locale> when the platform supports that. Previously, they used the platform's native character set. +=item * + +A regression introduced in 5.13.6 was fixed. This involved an inverted +bracketed character class in a regular expression that consisted solely +of a Unicode property, that property wasn't getting inverted outside the +Latin1 range. + =back =head1 Known Problems @@ -11425,6 +11425,12 @@ parseit: * there should not be overlap unless is /d rules. */ _invlist_invert(nonbitmap); + /* Any swash can't be used as-is, because we've inverted things */ + if (swash) { + SvREFCNT_dec(swash); + swash = NULL; + } + for (i = 0; i < 256; ++i) { if (ANYOF_BITMAP_TEST(ret, i)) { ANYOF_BITMAP_CLEAR(ret, i); diff --git a/t/re/re_tests b/t/re/re_tests index 4eafaf79bc..e7680c9c23 100644 --- a/t/re/re_tests +++ b/t/re/re_tests @@ -1572,4 +1572,7 @@ abc\N{def - c - \\N{NAME} must be resolved by the lexer /[[:lower:]]/i \N{U+3400} n - - /[[:upper:]]/i \N{U+01BB} n - - +# [perl #110648] +[^\p{Alphabetic}] \x{100} n - - + # vim: softtabstop=0 noexpandtab |