This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Encode to CPAN version 2.54
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Thu, 29 Aug 2013 18:30:07 +0000 (19:30 +0100)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Thu, 29 Aug 2013 18:30:07 +0000 (19:30 +0100)
  [DELTA]

$Revision: 2.54 $ $Date: 2013/08/29 16:47:39 $
! Encode.xs
+ t/cow.t
  Addressed: COW breakage with _utf8_on()
  https://rt.cpan.org/Ticket/Display.html?id=88230
! Encode.pm
  Reverted the document accordingly to #11
  https://github.com/dankogai/p5-encode/pull/10
+ t/decode.t
  Unit test for decoding behavior change in #11
  https://github.com/dankogai/p5-encode/pull/12

2.53 2013/08/29 15:20:31
! Encode.pm
  Merged: Do not short-circuit decode_utf8 with utf8 flags
  https://github.com/dankogai/p5-encode/pull/11
  Merged: document decode_utf8 behaviour more precise
  https://github.com/dankogai/p5-encode/pull/10
! Makefile.PL
  Added repository cpan metadata
  https://github.com/dankogai/p5-encode/pull/9

MANIFEST
Porting/Maintainers.pl
cpan/Encode/Changes
cpan/Encode/Encode.pm
cpan/Encode/Encode.xs
cpan/Encode/MANIFEST
cpan/Encode/META.json
cpan/Encode/META.yml
cpan/Encode/Makefile.PL
cpan/Encode/t/cow.t [new file with mode: 0644]
cpan/Encode/t/decode.t [new file with mode: 0644]

index b59eaef..4c01447 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -837,6 +837,8 @@ cpan/Encode/t/big5-eten.utf         test data
 cpan/Encode/t/big5-hkscs.enc           test data
 cpan/Encode/t/big5-hkscs.utf           test data
 cpan/Encode/t/CJKT.t                   test script
+cpan/Encode/t/cow.t
+cpan/Encode/t/decode.t
 cpan/Encode/t/enc_data.t               test script for utf8 DATA
 cpan/Encode/t/enc_eucjp.t              test script
 cpan/Encode/t/enc_module.enc           test data for t/enc_module.t
index 3283517..60cfb2c 100755 (executable)
@@ -595,7 +595,7 @@ use File::Glob qw(:case);
 
     'Encode' => {
         'MAINTAINER'   => 'dankogai',
-        'DISTRIBUTION' => 'DANKOGAI/Encode-2.52.tar.gz',
+        'DISTRIBUTION' => 'DANKOGAI/Encode-2.54.tar.gz',
         'FILES'        => q[cpan/Encode],
         'UPSTREAM'     => 'cpan',
     },
index 3e6b9b0..c3d7229 100644 (file)
@@ -1,8 +1,30 @@
 # Revision history for Perl extension Encode.
 #
-# $Id: Changes,v 2.52 2013/08/14 02:29:54 dankogai Exp $
+# $Id: Changes,v 2.54 2013/08/29 16:47:39 dankogai Exp dankogai $
 #
-$Revision: 2.52 $ $Date: 2013/08/14 02:29:54 $
+$Revision: 2.54 $ $Date: 2013/08/29 16:47:39 $
+! Encode.xs
++ t/cow.t
+  Addressed: COW breakage with _utf8_on()
+  https://rt.cpan.org/Ticket/Display.html?id=88230
+! Encode.pm
+  Reverted the document accordingly to #11
+  https://github.com/dankogai/p5-encode/pull/10
++ t/decode.t
+  Unit test for decoding behavior change in #11
+  https://github.com/dankogai/p5-encode/pull/12
+
+2.53 2013/08/29 15:20:31
+! Encode.pm
+  Merged: Do not short-circuit decode_utf8 with utf8 flags
+  https://github.com/dankogai/p5-encode/pull/11
+  Merged: document decode_utf8 behaviour more precise
+  https://github.com/dankogai/p5-encode/pull/10
+! Makefile.PL
+  Added repository cpan metadata
+  https://github.com/dankogai/p5-encode/pull/9
+
+2.52 2013/08/14 02:29:54
 ! ucm/*.ucm
   Addressed:
     Unicode Mappping tables are missing Unicode Inc. license notification
index aea404a..4285871 100644 (file)
@@ -1,10 +1,10 @@
 #
-# $Id: Encode.pm,v 2.52 2013/08/14 02:29:54 dankogai Exp $
+# $Id: Encode.pm,v 2.54 2013/08/29 16:47:39 dankogai Exp dankogai $
 #
 package Encode;
 use strict;
 use warnings;
-our $VERSION = sprintf "%d.%02d", q$Revision: 2.52 $ =~ /(\d+)/g;
+our $VERSION = sprintf "%d.%02d", q$Revision: 2.54 $ =~ /(\d+)/g;
 use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG};
 use XSLoader ();
 XSLoader::load( __PACKAGE__, $VERSION );
@@ -209,7 +209,6 @@ my $utf8enc;
 
 sub decode_utf8($;$) {
     my ( $octets, $check ) = @_;
-    return $octets if is_utf8($octets);
     return undef unless defined $octets;
     $octets .= '' if ref $octets;
     $check   ||= 0;
index d088d25..3ecfdad 100644 (file)
@@ -1,5 +1,5 @@
 /*
- $Id: Encode.xs,v 2.23 2013/04/29 22:19:11 dankogai Exp $
+ $Id: Encode.xs,v 2.24 2013/08/29 16:47:39 dankogai Exp dankogai $
  */
 
 #define PERL_NO_GET_CONTEXT
@@ -837,6 +837,10 @@ CODE:
 OUTPUT:
     RETVAL
 
+#ifndef SvIsCOW
+# define SvIsCOW (SvREADONLY(sv) && SvFAKE(sv))
+#endif
+
 SV *
 _utf8_on(sv)
 SV *   sv
@@ -845,6 +849,7 @@ CODE:
     if (SvPOK(sv)) {
     SV *rsv = newSViv(SvUTF8(sv));
     RETVAL = rsv;
+    if (SvIsCOW(sv)) sv_force_normal(sv);
     SvUTF8_on(sv);
     } else {
     RETVAL = &PL_sv_undef;
@@ -861,6 +866,7 @@ CODE:
     if (SvPOK(sv)) {
     SV *rsv = newSViv(SvUTF8(sv));
     RETVAL = rsv;
+    if (SvIsCOW(sv)) sv_force_normal(sv);
     SvUTF8_off(sv);
     } else {
     RETVAL = &PL_sv_undef;
index be51afd..5fb6115 100644 (file)
@@ -67,6 +67,8 @@ t/big5-eten.enc       test data
 t/big5-eten.utf        test data
 t/big5-hkscs.enc       test data
 t/big5-hkscs.utf       test data
+t/cow.t                 test script
+t/decode.t              test script
 t/enc_data.t           test script for encoding.pm vs. DATA fh
 t/enc_eucjp.t  test script
 t/enc_module.enc test data for t/enc_module.t
index 4f3b6d8..b50c273 100644 (file)
@@ -4,7 +4,7 @@
       "unknown"
    ],
    "dynamic_config" : 1,
-   "generated_by" : "ExtUtils::MakeMaker version 6.68, CPAN::Meta::Converter version 2.131560",
+   "generated_by" : "ExtUtils::MakeMaker version 6.72, CPAN::Meta::Converter version 2.132140",
    "license" : [
       "perl_5"
    ],
       }
    },
    "release_status" : "stable",
-   "version" : "2.52"
+   "resources" : {
+      "repository" : {
+         "url" : "https://github.com/dankogai/p5-encode"
+      }
+   },
+   "version" : "2.54"
 }
index f2a8256..5bb345a 100644 (file)
@@ -7,7 +7,7 @@ build_requires:
 configure_requires:
   ExtUtils::MakeMaker: 0
 dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 6.68, CPAN::Meta::Converter version 2.131560'
+generated_by: 'ExtUtils::MakeMaker version 6.72, CPAN::Meta::Converter version 2.132140'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -18,4 +18,6 @@ no_index:
     - t
     - inc
 requires: {}
-version: 2.52
+resources:
+  repository: https://github.com/dankogai/p5-encode
+version: 2.54
index 126f00e..6cc1b4f 100644 (file)
@@ -1,5 +1,5 @@
 #
-# $Id: Makefile.PL,v 2.10 2013/02/18 02:23:56 dankogai Exp $
+# $Id: Makefile.PL,v 2.11 2013/08/29 15:20:31 dankogai Exp $
 #
 use 5.007003;
 use strict;
@@ -46,6 +46,11 @@ WriteMakefile(
     LICENSE     => 'perl',
     PMLIBDIRS   => \@pmlibdirs,
     INSTALLDIRS => ($] < 5.011 ? 'perl' : 'site'),
+    META_MERGE        => {
+        resources => {
+            repository  =>  'https://github.com/dankogai/p5-encode',
+        },
+    },
 );
 
 package MY;
diff --git a/cpan/Encode/t/cow.t b/cpan/Encode/t/cow.t
new file mode 100644 (file)
index 0000000..2b8cec6
--- /dev/null
@@ -0,0 +1,20 @@
+#
+# $Id: cow.t,v 1.1 2013/08/29 16:47:39 dankogai Exp dankogai $
+#
+use strict;
+use Encode ();
+use Test::More tests => 2;
+
+
+my %a = ( "L\x{c3}\x{a9}on" => "acme" );
+my ($k) = ( keys %a );
+Encode::_utf8_on($k);
+my %h = ( $k => "acme" );
+is $h{"L\x{e9}on"} => 'acme';
+($k) = ( keys %h );
+Encode::_utf8_off($k);
+%a = ( $k => "acme" );
+is $h{"L\x{e9}on"} => 'acme';
+# use Devel::Peek;
+# Dump(\%h);
+
diff --git a/cpan/Encode/t/decode.t b/cpan/Encode/t/decode.t
new file mode 100644 (file)
index 0000000..8281ca8
--- /dev/null
@@ -0,0 +1,25 @@
+#
+# $Id: decode.t,v 1.1 2013/08/29 16:47:39 dankogai Exp dankogai $
+#
+use strict;
+use Encode qw(decode_utf8 FB_CROAK);
+use Test::More tests => 3;
+
+sub croak_ok(&) {
+    my $code = shift;
+    eval { $code->() };
+    like $@, qr/does not map/;
+}
+
+my $bytes = "L\x{e9}on";
+my $pad = "\x{30C9}";
+
+my $orig = $bytes;
+croak_ok { Encode::decode_utf8($orig, FB_CROAK) };
+
+my $orig2 = $bytes;
+croak_ok { Encode::decode('utf-8', $orig2, FB_CROAK) };
+
+chop(my $new = $bytes . $pad);
+croak_ok { Encode::decode_utf8($new, FB_CROAK) };
+