This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to Encode 1.67.
[perl5.git] / ext / Encode / lib / Encode / Guess.pm
index 35cc1e1..2a84cc4 100644 (file)
@@ -2,7 +2,7 @@ package Encode::Guess;
 use strict;
 
 use Encode qw(:fallbacks find_encoding);
-our $VERSION = do { my @r = (q$Revision: 1.4 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+our $VERSION = do { my @r = (q$Revision: 1.5 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
 
 my $Canon = 'Guess';
 our $DEBUG = 0;
@@ -65,16 +65,20 @@ sub guess {
     my $class = shift;
     my $obj   = ref($class) ? $class : $Encode::Encoding{$Canon};
     my $octet = shift;
+
+    # sanity check
+    return unless defined $octet and length $octet;
+
     # cheat 0: utf8 flag;
     Encode::is_utf8($octet) and return find_encoding('utf8');
     # cheat 1: BOM
     use Encode::Unicode;
     my $BOM = unpack('n', $octet);
     return find_encoding('UTF-16') 
-       if ($BOM == 0xFeFF or $BOM == 0xFFFe);
+       if (defined $BOM and ($BOM == 0xFeFF or $BOM == 0xFFFe));
     $BOM = unpack('N', $octet);
     return find_encoding('UTF-32') 
-       if ($BOM == 0xFeFF or $BOM == 0xFFFe0000);
+       if (defined $BOM and ($BOM == 0xFeFF or $BOM == 0xFFFe0000));
 
     my %try =  %{$obj->{Suspects}};
     for my $c (@_){