Update Compress-Raw-Bzip2 to CPAN version 2.064
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Sun, 2 Feb 2014 12:15:01 +0000 (12:15 +0000)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Sun, 2 Feb 2014 12:15:01 +0000 (12:15 +0000)
  [DELTA]

  2.064 1 February 2014

      * [PATCH] Handle non-PVs better
        [#91558]

MANIFEST
Porting/Maintainers.pl
cpan/Compress-Raw-Bzip2/Bzip2.xs
cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm
cpan/Compress-Raw-Bzip2/t/000prereq.t
cpan/Compress-Raw-Bzip2/t/19nonpv.t [new file with mode: 0644]

index 5e47478..4f47a4f 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -194,6 +194,7 @@ cpan/Compress-Raw-Bzip2/private/MakeUtil.pm
 cpan/Compress-Raw-Bzip2/t/000prereq.t
 cpan/Compress-Raw-Bzip2/t/01bzip2.t
 cpan/Compress-Raw-Bzip2/t/09limitoutput.t
+cpan/Compress-Raw-Bzip2/t/19nonpv.t
 cpan/Compress-Raw-Bzip2/t/99pod.t
 cpan/Compress-Raw-Bzip2/t/compress/CompTestUtils.pm
 cpan/Compress-Raw-Bzip2/typemap
index d66aaa5..f360768 100755 (executable)
@@ -211,7 +211,7 @@ use File::Glob qw(:case);
     },
 
     'Compress::Raw::Bzip2' => {
-        'DISTRIBUTION' => 'PMQS/Compress-Raw-Bzip2-2.063.tar.gz',
+        'DISTRIBUTION' => 'PMQS/Compress-Raw-Bzip2-2.064.tar.gz',
         'FILES'        => q[cpan/Compress-Raw-Bzip2],
         'EXCLUDED'     => [
             qr{^t/Test/},
index 8257244..17924c7 100644 (file)
@@ -485,6 +485,7 @@ bzdeflate (s, buf, output)
     uInt       increment = NO_INIT
     int                RETVAL = 0;
     uInt   bufinc = NO_INIT
+    STRLEN   origlen = NO_INIT
   CODE:
     bufinc = s->bufsize;
 
@@ -496,8 +497,8 @@ bzdeflate (s, buf, output)
     if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1))
          croak("Wide character in " COMPRESS_CLASS "::bzdeflate input parameter");
 #endif         
-    s->stream.next_in = (char*)SvPV_nomg_nolen(buf) ;
-    s->stream.avail_in = SvCUR(buf) ;
+    s->stream.next_in = (char*)SvPV_nomg(buf, origlen) ;
+    s->stream.avail_in = origlen;
      
     /* and retrieve the output buffer */
     output = deRef_l(output, "deflate") ;
@@ -532,7 +533,7 @@ bzdeflate (s, buf, output)
     }
 
     s->compressedBytes    += cur_length + increment - s->stream.avail_out ;
-    s->uncompressedBytes  += SvCUR(buf) - s->stream.avail_in  ;
+    s->uncompressedBytes  += origlen - s->stream.avail_in  ;
 
     s->last_error = RETVAL ;
     if (RETVAL == BZ_RUN_OK) {
@@ -725,6 +726,7 @@ bzinflate (s, buf, output)
     uInt       increment = 0;
     uInt    bufinc = NO_INIT
     STRLEN  na = NO_INIT ;
+    STRLEN    origlen = NO_INIT
   PREINIT:
 #ifdef UTF8_AVAILABLE    
     bool       out_utf8  = FALSE;
@@ -745,8 +747,8 @@ bzinflate (s, buf, output)
 #endif         
     
     /* initialise the input buffer */
-    s->stream.next_in = (char*)SvPV_nomg_nolen(buf) ;
-    s->stream.avail_in = SvCUR(buf);
+    s->stream.next_in = (char*)SvPV_nomg(buf, origlen) ;
+    s->stream.avail_in = origlen;
        
     /* and retrieve the output buffer */
     output = deRef_l(output, "bzinflate") ;
@@ -824,7 +826,7 @@ bzinflate (s, buf, output)
 
         s->bytesInflated = cur_length + increment - s->stream.avail_out - prefix_length;
         s->uncompressedBytes += s->bytesInflated ;
-        s->compressedBytes   += SvCUR(buf) - s->stream.avail_in  ;
+        s->compressedBytes   += origlen - s->stream.avail_in  ;
 
         SvPOK_only(output);
         SvCUR_set(output, prefix_length + s->bytesInflated) ;
index dd54517..037ba43 100644 (file)
@@ -11,7 +11,7 @@ use Carp ;
 use bytes ;
 our ($VERSION, $XS_VERSION, @ISA, @EXPORT, $AUTOLOAD);
 
-$VERSION = '2.063';
+$VERSION = '2.064';
 $XS_VERSION = $VERSION; 
 $VERSION = eval $VERSION;
 
@@ -378,7 +378,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2014 Paul Marquess. All rights reserved.
 
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
index a93ee9a..df43d67 100644 (file)
@@ -19,7 +19,7 @@ BEGIN
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
 
-    my $VERSION = '2.063';
+    my $VERSION = '2.064';
     my @NAMES = qw(
                        
                        );
diff --git a/cpan/Compress-Raw-Bzip2/t/19nonpv.t b/cpan/Compress-Raw-Bzip2/t/19nonpv.t
new file mode 100644 (file)
index 0000000..15d53b9
--- /dev/null
@@ -0,0 +1,91 @@
+BEGIN {
+    if ($ENV{PERL_CORE}) {
+       chdir 't' if -d 't';
+       @INC = ("../lib", "lib/compress");
+    }
+}
+
+use lib qw(t t/compress);
+use strict;
+use warnings;
+
+use Test::More ;
+use CompTestUtils;
+
+BEGIN 
+{ 
+    # use Test::NoWarnings, if available
+    my $extra = 0 ;
+    $extra = 1
+        if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
+
+    plan tests => 21 + $extra ;
+
+    use_ok('Compress::Raw::Bzip2', 2) ;
+}
+
+
+my $hello = <<EOM ;
+hello world
+this is a test
+EOM
+
+my $len   = length $hello ;
+
+
+{
+
+    title  "bzdeflate/bzinflate - non-PV buffers";
+    # ==============================
+
+    my $hello = *hello;
+    $hello = *hello;
+    my ($err, $x, $X, $status); 
+    ok( ($x, $err) = new Compress::Raw::Bzip2(0), "Create bzdeflate object" );
+    ok $x, "Compress::Raw::Bzip2 ok" ;
+    cmp_ok $err, '==', BZ_OK, "status is BZ_OK" ;
+    is $x->uncompressedBytes(), 0, "uncompressedBytes() == 0" ;
+    is $x->compressedBytes(), 0, "compressedBytes() == 0" ;
+
+    my $Answer = *Answer;
+    $Answer = *Answer;
+    $status = $x->bzdeflate($hello, $Answer) ;
+    cmp_ok $status, '==', BZ_RUN_OK, "bzdeflate returned BZ_RUN_OK" ;
+    
+    $X = *X;
+    cmp_ok  $x->bzflush($X), '==', BZ_RUN_OK, "bzflush returned BZ_RUN_OK" ;
+    $Answer .= $X ;
+     
+    is $x->uncompressedBytes(), length $hello, "uncompressedBytes ok" ;
+    is $x->compressedBytes(), length $Answer, "compressedBytes ok" ;
+     
+    $X = *X;
+    cmp_ok $x->bzclose($X), '==', BZ_STREAM_END, "bzclose returned BZ_STREAM_END";
+    $Answer .= $X ;
+
+    my @Answer = split('', $Answer) ;
+     
+    my $k;
+    ok(($k, $err) = new Compress::Raw::Bunzip2(0, 0));
+    ok $k, "Compress::Raw::Bunzip2 ok" ;
+    cmp_ok $err, '==', BZ_OK, "status is BZ_OK" ;
+    is $k->compressedBytes(), 0, "compressedBytes() == 0" ;
+    is $k->uncompressedBytes(), 0, "uncompressedBytes() == 0" ;
+    my $GOT = *GOT;
+    $GOT = *GOT;
+    my $Z;
+    $status = $k->bzinflate($Answer, $GOT) ;
+     
+     
+    cmp_ok $status, '==', BZ_STREAM_END, "Got BZ_STREAM_END" ;
+    is $GOT, $hello, "uncompressed data matches ok" ;
+    is $k->compressedBytes(), length $Answer, "compressedBytes ok" ;
+    is $k->uncompressedBytes(), length $hello , "uncompressedBytes ok";
+
+}
+
+