Fix double UTF-8 decode on Perl < 5.20 with upgraded Encode.pm
Commit feb21ebfac
added a
safe_decode_utf8 function that avoids double decoding on Perl 5.20.
But the Perl behavior change actually happened in Encode.pm 2.53
(https://github.com/dankogai/p5-encode/pull/11). Although Perl 5.20
is the first Perl version to bundle an affected version of Encode.pm,
it’s also possible to upgrade Encode.pm independently; for example,
Fedora 20 has Perl 5.18.4 with Encode.pm 2.54. On such a system,
editing a non-ASCII file still fails with errors like
Error: Cannot decode string with wide characters at
/usr/lib64/perl5/vendor_perl/Encode.pm line 216.
There doesn’t seem to be any reason not to check Encode::is_utf8 on
old versions too, so just remove the version check altogether.
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Bug-Debian: https://bugs.debian.org/776181
master
parent
2d27fadfc5
commit
f35c6a97d1
|
@ -124,9 +124,7 @@ sub decode_cgi_utf8 ($) {
|
|||
|
||||
sub safe_decode_utf8 ($) {
|
||||
my $octets = shift;
|
||||
# call decode_utf8 on >= 5.20 only if it's not already decoded,
|
||||
# otherwise it balks, on < 5.20, always call it
|
||||
if ($] < 5.02 || !Encode::is_utf8($octets)) {
|
||||
if (!Encode::is_utf8($octets)) {
|
||||
return decode_utf8($octets);
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Reference in New Issue