This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix GH #17278
authorKarl Williamson <khw@cpan.org>
Fri, 23 Oct 2020 13:54:53 +0000 (07:54 -0600)
committerKarl Williamson <khw@cpan.org>
Fri, 23 Oct 2020 14:06:38 +0000 (08:06 -0600)
commitbb58640a409949759318542317e353e2241cc408
treee764c72af9040a2662cb46927d90106c51d79e4d
parent28df11c0263c8ebd0e2bc0436b4a01c84279fc42
Fix GH #17278

This was an assertion failure in regexec.c under rare circumstances.  A
reduction of the fuzzed test case is now in pat_advanced.t

The root cause of this was that the pattern being compiled was encoded in
UTF-8 and 'use locale' was in effect, equivalent to the /l charset, and
then the charset was reset inside the pattern, to /d.  But /d in a UTF-8
patterns is illegal, hence the later assertion failure.

The solution is to reset instead to /u when the pattern is UTF-8.
regcomp.c
t/re/pat_advanced.t