This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix -Dr output
authorKarl Williamson <khw@cpan.org>
Tue, 15 Dec 2015 00:08:28 +0000 (17:08 -0700)
committerKarl Williamson <khw@cpan.org>
Tue, 15 Dec 2015 00:22:19 +0000 (17:22 -0700)
commit5e85fd899767ba3003766fc9289c0ee2d8427d10
treec0ae1d222cedc1115a98c9b11f16ea03493ea9a4
parentbb40cb3a7d5b9adfdd1ec29eba203645457898a1
Fix -Dr output

Before this commit, the debug output of a compiled regular expression
was wrong in some cases for /d bracketed character classes.

For example,

    qr/[\W\xAB]/

was displayed as compiling to:

    ANYOFD[^0-9A-Z_a-z\x{80}-\x{AA}\x{AC}-\x{FF}][{non-utf8-latin1-all}
    {utf8}00AB 02C2-02C5...] (12)

instead of the correct:

    ANYOFD[^0-9A-Z_a-z\x{80}-\x{AA}\x{AC}-\x{FF}][{non-utf8-latin1-all}
    {utf8}0080-00A9 00AC-00B4 00B6-00B9 00BB-00BF 00D7 00F7 02C2-02C5
    ...] (12)

This was due to to the fact that the expression inside the first set of
square brackets was complemented, and the remainder was not complemented
back for display in the second set.

We have no tests for the debugging output, as there are no guarantees of
stability as to what gets output.  I also noticed a potential memory
leak, which this corrects.  But there are others in debugging, so I
didn't add a test for it.
regcomp.c