This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
regcomp.c: Set flags when optimizing a [char class]
authorKarl Williamson <public@khwilliamson.com>
Thu, 9 Aug 2012 20:38:03 +0000 (14:38 -0600)
committerKarl Williamson <public@khwilliamson.com>
Sun, 12 Aug 2012 01:32:31 +0000 (19:32 -0600)
commit34b39fc9cd81fbff0d52451a5c4570293817ca32
tree2d3faa4109ecba6c5d1c1cb2bb2279fd1048d122
parent78412e20d4b28d3841c99754748aa4a28fe204d3
regcomp.c: Set flags when optimizing a [char class]

A bracketed character class containing a single Latin1-range character
has long been optimized into an EXACT node.  Also, flags are set to
include SIMPLE.  However, EXACT nodes containing code points that are
different when encoded under UTF-8 versus not UTF-8 should not be marked
simple.

To fix this, the address of the flags parameter is now passed to
regclass(), the function that parses bracketed character classes, which
now sets it appropriately.  The unconditional setting of SIMPLE that was
always done in the code after calling regclass() has been removed.

In addition, the setting of the flags for EXACT nodes has been pushed
into the common function that populates them.

regclass() will also now increment the naughtiness count if optimized to
a node that normally does that.  I do not understand this heuristic
behavior very well, and could not come up with a test case for it;
experimentation revealed that there are no test cases in our test suite
for which naughtiness makes any difference at all.
embed.fnc
embed.h
proto.h
regcomp.c
t/re/pat.t