This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
PATCH: [perl #112208]: Set utf8 flag on $! appropriately
authorKarl Williamson <public@khwilliamson.com>
Thu, 20 Jun 2013 03:00:53 +0000 (21:00 -0600)
committerKarl Williamson <public@khwilliamson.com>
Sat, 6 Jul 2013 04:30:00 +0000 (22:30 -0600)
commit1500bd919ffeae0f3252f8d1bb28b03b043d328e
tree7888c3a582de5de3e706304f20e44b7f7da7b6f7
parent69edd4754eb5832038093138e75d8325269476a4
PATCH: [perl #112208]: Set utf8 flag on $! appropriately

This patch sets the utf8 flag on $! if the error string passes utf8
validity tests and has some bytes with the upper bit set.  (If none
have that bit set, is an ASCII string, and whether or not it is UTF-8 is
irrelevant.)  This is a heuristic that could fail, but as the reference
in the comments points out this is unlikely.

One can reasonably assume that a UTF-8 locale will return a UTF-8
result.  So another approach would be to look at that (but we wouldn't
want to turn the flag on for a purely ASCII string anyway, as that could
change the semantics from existing behavior by making the string follow
Unicode rules, whereas it didn't necessarily before.)  To do this, we
could keep track of the utf8ness of the LC_MESSAGES locale.  But until
the heuristic in this patch is shown to not be good enough, I don't see
the need to do this extra work.
lib/locale.t
mg.c