This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update MIME-Base64 to CPAN version 3.13
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Fri, 26 Nov 2010 23:24:22 +0000 (23:24 +0000)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Fri, 26 Nov 2010 23:25:39 +0000 (23:25 +0000)
  [DELTA]

  2010-10-26   Gisle Aas <gisle@ActiveState.com>

   Release 3.13

   The fix in v3.12 to try to preserve the SvUTF8 flag was buggy
   and actually managed to set the flag on strings that did not
   have it originally.

This resolves the test failures for Encode::Encoder

Porting/Maintainers.pl
cpan/MIME-Base64/Base64.pm
cpan/MIME-Base64/Base64.xs
cpan/MIME-Base64/Changes
cpan/MIME-Base64/QuotedPrint.pm
cpan/MIME-Base64/t/unicode.t
pod/perldelta.pod

index b699f0d..72ee555 100755 (executable)
@@ -927,7 +927,7 @@ use File::Glob qw(:case);
     'MIME::Base64' =>
        {
        'MAINTAINER'    => 'gaas',
-       'DISTRIBUTION'  => 'GAAS/MIME-Base64-3.12.tar.gz',
+       'DISTRIBUTION'  => 'GAAS/MIME-Base64-3.13.tar.gz',
        'FILES'         => q[cpan/MIME-Base64],
        'EXCLUDED'      => [ qw{ t/bad-sv.t }, ],
        'UPSTREAM'      => 'cpan',
index c221bf1..2ce412d 100644 (file)
@@ -8,7 +8,7 @@ require Exporter;
 @EXPORT = qw(encode_base64 decode_base64);
 @EXPORT_OK = qw(encode_base64url decode_base64url encoded_base64_length decoded_base64_length);
 
-$VERSION = '3.12';
+$VERSION = '3.13';
 
 require XSLoader;
 XSLoader::load('MIME::Base64', $VERSION);
index 695e24a..b6959bc 100644 (file)
@@ -107,11 +107,12 @@ encode_base64(sv,...)
        STRLEN rlen;   /* length of result string */
        unsigned char c1, c2, c3;
        int chunk;
-       bool utf8_downgraded;
+       U32 had_utf8;
 
        CODE:
 #if PERL_REVISION == 5 && PERL_VERSION >= 6
-       utf8_downgraded = sv_utf8_downgrade(sv, FALSE);
+       had_utf8 = SvUTF8(sv);
+       sv_utf8_downgrade(sv, FALSE);
 #endif
        str = SvPV(sv, rlen); /* SvPV(sv, len) gives warning for signed len */
        len = (SSize_t)rlen;
@@ -171,7 +172,7 @@ encode_base64(sv,...)
        }
        *r = '\0';  /* every SV in perl should be NUL-terminated */
 #if PERL_REVISION == 5 && PERL_VERSION >= 6
-       if (utf8_downgraded)
+       if (had_utf8)
            sv_utf8_upgrade(sv);
 #endif
 
@@ -247,12 +248,18 @@ encoded_base64_length(sv,...)
        PREINIT:
        SSize_t len;   /* length of the string */
        STRLEN eollen; /* length of the EOL sequence */
+       U32 had_utf8;
 
        CODE:
 #if PERL_REVISION == 5 && PERL_VERSION >= 6
+       had_utf8 = SvUTF8(sv);
        sv_utf8_downgrade(sv, FALSE);
 #endif
        len = SvCUR(sv);
+#if PERL_REVISION == 5 && PERL_VERSION >= 6
+       if (had_utf8)
+           sv_utf8_upgrade(sv);
+#endif
 
        if (items > 1 && SvOK(ST(1))) {
            eollen = SvCUR(ST(1));
@@ -322,11 +329,12 @@ encode_qp(sv,...)
        char *p;
        char *p_beg;
        STRLEN p_len;
-       bool utf8_downgraded;
+       U32 had_utf8;
 
        CODE:
 #if PERL_REVISION == 5 && PERL_VERSION >= 6
-       utf8_downgraded = sv_utf8_downgrade(sv, FALSE);
+        had_utf8 = SvUTF8(sv);
+       sv_utf8_downgrade(sv, FALSE);
 #endif
        /* set up EOL from the second argument if present, default to "\n" */
        if (items > 1 && SvOK(ST(1))) {
@@ -419,7 +427,7 @@ encode_qp(sv,...)
            sv_catpvn(RETVAL, eol, eol_len);
        }
 #if PERL_REVISION == 5 && PERL_VERSION >= 6
-       if (utf8_downgraded)
+       if (had_utf8)
            sv_utf8_upgrade(sv);
 #endif
 
index defed05..428dcbc 100644 (file)
@@ -1,3 +1,13 @@
+2010-10-26   Gisle Aas <gisle@ActiveState.com>
+
+   Release 3.13
+
+   The fix in v3.12 to try to preserve the SvUTF8 flag was buggy
+   and actually managed to set the flag on strings that did not
+   have it originally.
+
+
+
 2010-10-25   Gisle Aas <gisle@ActiveState.com>
 
    Release 3.12
index 398d244..d0c71d1 100644 (file)
@@ -7,7 +7,7 @@ require Exporter;
 @ISA = qw(Exporter);
 @EXPORT = qw(encode_qp decode_qp);
 
-$VERSION = "3.12";
+$VERSION = "3.13";
 
 use MIME::Base64;  # will load XS version of {en,de}code_qp()
 
index f5dd45d..d6eba55 100644 (file)
@@ -10,7 +10,7 @@ BEGIN {
 }
 
 use Test;
-plan tests => 8;
+plan tests => 11;
 
 require MIME::Base64;
 require MIME::QuotedPrint;
@@ -38,7 +38,12 @@ if (defined &utf8::is_utf8) {
     ok(utf8::is_utf8($str));
     ok(MIME::QuotedPrint::encode($str), "aaa=\n");
     ok(utf8::is_utf8($str));
+
+    utf8::downgrade($str);
+    ok(!utf8::is_utf8($str));
+    ok(MIME::Base64::encode($str, ""), "YWFh");
+    ok(!utf8::is_utf8($str));
 }
 else {
-    skip("Missing is_utf8") for 1..6;
+    skip("Missing is_utf8") for 1..9;
 }
index b445eeb..8b389aa 100644 (file)
@@ -136,7 +136,7 @@ and documentation enhancements.
 
 =item *
 
-C<MIME::Base64> has been upgraded from 3.10 to 3.12
+C<MIME::Base64> has been upgraded from 3.10 to 3.13
 
 Now provides encode_base64url and decode_base64url functions to process
 the base64 scheme for "URL applications".