diff options
Diffstat (limited to 'ext/MIME/Base64')
-rw-r--r-- | ext/MIME/Base64/QuotedPrint.pm | 5 | ||||
-rw-r--r-- | ext/MIME/Base64/t/quoted-print.t | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/ext/MIME/Base64/QuotedPrint.pm b/ext/MIME/Base64/QuotedPrint.pm index 0b93f2062f..ad0d7e1313 100644 --- a/ext/MIME/Base64/QuotedPrint.pm +++ b/ext/MIME/Base64/QuotedPrint.pm @@ -72,11 +72,16 @@ require Exporter; @ISA = qw(Exporter); @EXPORT = qw(encode_qp decode_qp); +use Carp qw(croak); + $VERSION = sprintf("%d.%02d", q$Revision: 2.3 $ =~ /(\d+)\.(\d+)/); sub encode_qp ($) { my $res = shift; + croak("The Quoted-Printable encoding is only defined for bytes") + if $res =~ /[^\0-\xFF]/; + # Do not mention ranges such as $res =~ s/([^ \t\n!-<>-~])/sprintf("=%02X", ord($1))/eg; # since that will not even compile on an EBCDIC machine (where ord('!') > ord('<')). if (ord('A') == 193) { # EBCDIC style machine diff --git a/ext/MIME/Base64/t/quoted-print.t b/ext/MIME/Base64/t/quoted-print.t index 1a7f9e4550..97e525ec66 100644 --- a/ext/MIME/Base64/t/quoted-print.t +++ b/ext/MIME/Base64/t/quoted-print.t @@ -71,7 +71,7 @@ y. -- H. L. Mencken"], # line width ); -$notests = @tests + 2; +$notests = @tests + 3; print "1..$notests\n"; $testno = 0; @@ -111,3 +111,5 @@ print "not " unless decode_qp("foo \r\n\r\nfoo =\r\n\r\nfoo=20\r\n\r\n") eq "foo\r\n\r\nfoo \r\nfoo \r\n\r\n"; $testno++; print "ok $testno\n"; +print "not " if eval { encode_qp("XXX \x{100}") } || $@ !~ /^The Quoted-Printable encoding is only defined for bytes/; +$testno++; print "ok $testno\n"; |