Upgrade to Encode 2.22
authorRafael Garcia-Suarez <rgarciasuarez@gmail.com>
Tue, 29 May 2007 09:33:52 +0000 (09:33 +0000)
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>
Tue, 29 May 2007 09:33:52 +0000 (09:33 +0000)
p4raw-id: //depot/perl@31305

ext/Encode/Changes
ext/Encode/Encode.pm
ext/Encode/Encode.xs
ext/Encode/t/fallback.t
ext/Encode/t/mime-name.t

index 0d3d9a4..1611254 100644 (file)
@@ -1,8 +1,35 @@
 # Revision history for Perl extension Encode.
 #
-# $Id: Changes,v 2.20 2007/04/22 14:56:12 dankogai Exp dankogai $
+# $Id: Changes,v 2.22 2007/05/29 07:35:27 dankogai Exp dankogai $
 #
-$Revision: 2.20 $ $Date: 2007/04/22 14:56:12 $
+$Revision: 2.22 $ $Date: 2007/05/29 07:35:27 $
+! Encode.pm
+  from_to() does not honor the check while decoding.  That's a feature.
+  To make sure it is a feature it is mentioned in the POD.
+  http://rt.cpan.org/NoAuth/Bug.html?id=#27277
+! Makefile.pl
+  Encode used to suppress man page generation.  Now it does.
+  http://rt.cpan.org/NoAuth/Bug.html?id=#27200
+! Encode.pm Encode.xs t/fallback.t
+  Addressed: (de|en)code("ascii", "\x{3000}", sub{ $_[0] }) segfaults
+  Reported by MIYAGAWA
+
+2.21 2007/05/12 06:42:19
++ lib/Encode/MIME/Name.pm t/mime-name.t
+! Encode.pm Encode.xs lib/Encode/Encoding.pm
+  new method: mime_name()
+  inspired by: MIYAGAWA
+! t/encoding.t
+  Subject: Re: Compress::Zlib, pack "C" and utf-8 [PATCH]
+  From: Marc Lehmann <schmorp@schmorp.de>
+  Date: Thu, 12 Apr 2007 08:41:53 +0200
+  Message-ID: <20070412064153.GA22475@schmorp.de>
+  http://public.activestate.com/cgi-bin/perlbrowse/p/31194
+! Unicode/Unicode.pm
+  POD fix.
+  Message-Id: <20070417220547.GA11999@zetta.zet>
+
+2.20  2007/04/22 14:56:12
 ! Encode.pm
   Pod fixes.  Now find_encoding() is explained more in details.
 + lib/Encode/GSM0338.pm
index 74c7e3f..953bb56 100644 (file)
@@ -1,10 +1,10 @@
 #
-# $Id: Encode.pm,v 2.21 2007/05/12 06:42:19 dankogai Exp dankogai $
+# $Id: Encode.pm,v 2.22 2007/05/29 07:35:27 dankogai Exp dankogai $
 #
 package Encode;
 use strict;
 use warnings;
-our $VERSION = sprintf "%d.%02d", q$Revision: 2.21 $ =~ /(\d+)/g;
+our $VERSION = sprintf "%d.%02d", q$Revision: 2.22 $ =~ /(\d+)/g;
 sub DEBUG () { 0 }
 use XSLoader ();
 XSLoader::load( __PACKAGE__, $VERSION );
@@ -144,7 +144,7 @@ sub encode($$;$) {
         Carp::croak("Unknown encoding '$name'");
     }
     my $octets = $enc->encode( $string, $check );
-    $_[1] = $string if $check and !( $check & LEAVE_SRC() );
+    $_[1] = $string if $check and !ref $check and !( $check & LEAVE_SRC() );
     return $octets;
 }
 *str2bytes = \&encode;
@@ -160,7 +160,7 @@ sub decode($$;$) {
         Carp::croak("Unknown encoding '$name'");
     }
     my $string = $enc->decode( $octets, $check );
-    $_[1] = $octets if $check and !( $check & LEAVE_SRC() );
+    $_[1] = $octets if $check and !ref $check and !( $check & LEAVE_SRC() );
     return $string;
 }
 *bytes2str = \&decode;
@@ -499,6 +499,20 @@ but only #2 turns UTF8 flag on.  #1 is equivalent to
 
 See L</"The UTF8 flag"> below.
 
+Also note that
+
+  from_to($octets, $from, $to, $check);
+
+is equivalent to
+
+  $octets = encode($to, decode($from, $octets), $check);
+
+Yes, it does not respect the $check during decoding.  It is
+deliberately done that way.  If you need minute control, C<decode>
+then C<encode> as follows;
+
+  $octets = encode($to, decode($from, $octets, $check_from), $check_to);
+
 =item $octets = encode_utf8($string);
 
 Equivalent to C<$octets = encode("utf8", $string);> The characters
index 9de0a64..c86ce82 100644 (file)
@@ -1,5 +1,5 @@
 /*
- $Id: Encode.xs,v 2.12 2007/05/12 06:42:19 dankogai Exp dankogai $
+ $Id: Encode.xs,v 2.13 2007/05/29 07:35:27 dankogai Exp dankogai $
  */
 
 #define PERL_NO_GET_CONTEXT
@@ -70,7 +70,7 @@ do_fallback_cb(pTHX_ UV ch)
 {
     dSP;
     int argc;
-    SVretval;
+    SV *temp, *retval;
     ENTER;
     SAVETMPS;
     PUSHMARK(sp);
@@ -81,10 +81,12 @@ do_fallback_cb(pTHX_ UV ch)
     if (argc != 1){
     croak("fallback sub must return scalar!");
     }
-    retval = newSVsv(POPs);
+    temp = newSVsv(POPs);
     PUTBACK;
     FREETMPS;
     LEAVE;
+    retval = newSVpv("",0);
+    sv_catsv(retval, temp);
     return retval;
 }
 
index 4cbfe77..f6fcc5a 100644 (file)
@@ -17,7 +17,7 @@ BEGIN {
 
 use strict;
 #use Test::More qw(no_plan);
-use Test::More tests => 44;
+use Test::More tests => 48;
 use Encode q(:all);
 
 my $uo = '';
@@ -163,3 +163,15 @@ $src = $ao;
 $dst = $ascii->decode($src, sub{ sprintf "[%02X]", shift });
 is($dst, $uc, "coderef decode");
 is($src, $ao, "coderef residue decode");
+
+$src = "\x{3000}";
+$dst = $ascii->encode($src, sub{ $_[0] });
+is $dst, 0x3000."", qq{$ascii->encode(\$src, sub{ \$_[0] } )};
+$dst = encode("ascii", "\x{3000}", sub{ $_[0] });
+is $dst, 0x3000."", qq{encode("ascii", "\\x{3000}", sub{ \$_[0] })};
+
+$src = pack "C*", 0xFF;
+$dst = $ascii->decode($src, sub{ $_[0] });
+is $dst, 0xFF."", qq{$ascii->encode(\$src, sub{ \$_[0] } )};
+$dst = decode("ascii", (pack "C*", 0xFF), sub{ $_[0] });
+is $dst, 0xFF."", qq{decode("ascii", (pack "C*", 0xFF), sub{ \$_[0] })};
index 5346497..02ff490 100644 (file)
@@ -1,5 +1,5 @@
 #
-# $Id: mime-name.t,v 1.1 2007/05/12 06:42:19 dankogai Exp dankogai $
+# $Id: mime-name.t,v 1.1 2007/05/12 06:42:19 dankogai Exp $
 # This script is written in utf8
 #
 BEGIN {