This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Compress-Raw-Zlib to CPAN version 2.096
authorTodd Rinaldo <toddr@cpan.org>
Tue, 15 Sep 2020 14:37:28 +0000 (09:37 -0500)
committerℕicolas ℝ <nicolas@atoomic.org>
Tue, 15 Sep 2020 16:14:31 +0000 (10:14 -0600)
[DELTA]

2.096 31 July 2020

* No changes

2.095 19 July 2020

* No changes

2.094 13 July 2020

* Issue with Append mode & SvOOK
https://github.com/pmqs/Compress-Raw-Zlib/issues/3
80ee0524012f46c5984c2d57649af0b07f82c750

Porting/Maintainers.pl
cpan/Compress-Raw-Zlib/Zlib.xs
cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm
cpan/Compress-Raw-Zlib/t/02zlib.t

index 95b6da3..94f3653 100755 (executable)
@@ -211,7 +211,7 @@ use File::Glob qw(:case);
     },
 
     'Compress::Raw::Zlib' => {
-        'DISTRIBUTION' => 'PMQS/Compress-Raw-Zlib-2.093.tar.gz',
+        'DISTRIBUTION' => 'PMQS/Compress-Raw-Zlib-2.096.tar.gz',
         'FILES'    => q[cpan/Compress-Raw-Zlib],
         'EXCLUDED' => [
             qr{^examples/},
index 496b876..085078d 100644 (file)
@@ -9,9 +9,9 @@
  *
  */
 
-/* Parts of this code are based on the files gzio.c and gzappend.c from 
+/* Parts of this code are based on the files gzio.c and gzappend.c from
  * the standard zlib source distribution. Below are the copyright statements
- * from each. 
+ * from each.
  */
 
 /* gzio.c -- IO on .gz files
@@ -31,7 +31,7 @@
 #include "perl.h"
 #include "XSUB.h"
 
-#include "zlib.h" 
+#include "zlib.h"
 
 /* zlib prior to 1.06 doesn't know about z_off_t */
 #ifndef z_off_t
@@ -39,7 +39,7 @@
 #endif
 
 #if  ! defined(ZLIB_VERNUM) || ZLIB_VERNUM < 0x1200
-#  define NEED_DUMMY_BYTE_AT_END 
+#  define NEED_DUMMY_BYTE_AT_END
 #endif
 
 #if  defined(ZLIB_VERNUM) && ZLIB_VERNUM >= 0x1210
@@ -64,7 +64,7 @@
 #endif
 
 #if  defined(ZLIB_VERNUM) && ZLIB_VERNUM >= 0x1252
-/* 
+/*
     Use Z_SOLO to build source means need own malloc/free
  */
 #  define AT_LEAST_ZLIB_1_2_5_2
@@ -133,7 +133,7 @@ typedef struct di_stream {
     uLong    crc32 ;
     uLong    adler32 ;
     z_stream stream;
-    uLong     bufsize; 
+    uLong     bufsize;
     SV *     dictionary ;
     uLong    dict_adler ;
     int      last_error ;
@@ -169,7 +169,7 @@ typedef struct di_stream {
 
     uLong    lastBlockOffset ;
     unsigned char window_lastByte ;
-                
+
 
 #endif
 } di_stream;
@@ -190,7 +190,7 @@ typedef di_stream * Compress__Raw__Zlib__inflateScanStream ;
 #if defined(AMIGA) || defined(AMIGAOS) || defined(__amigaos4__)
 #  define OS_CODE  0x01
 #endif
+
 #if defined(VAXC) || defined(VMS)
 #  define OS_CODE  0x02
 #endif
@@ -198,15 +198,15 @@ typedef di_stream * Compress__Raw__Zlib__inflateScanStream ;
 #if 0 /* VM/CMS */
 #  define OS_CODE  0x04
 #endif
+
 #if defined(ATARI) || defined(atarist)
 #  define OS_CODE  0x05
 #endif
+
 #ifdef OS2
 #  define OS_CODE  0x06
 #endif
+
 #if defined(MACOS) || defined(TARGET_OS_MAC)
 #  define OS_CODE  0x07
 #endif
@@ -214,11 +214,11 @@ typedef di_stream * Compress__Raw__Zlib__inflateScanStream ;
 #if 0 /* Z-System */
 #  define OS_CODE  0x08
 #endif
+
 #if 0 /* CP/M */
 #  define OS_CODE  0x09
 #endif
+
 #ifdef TOPS20
 #  define OS_CODE  0x0a
 #endif
@@ -226,24 +226,24 @@ typedef di_stream * Compress__Raw__Zlib__inflateScanStream ;
 #ifdef WIN32 /* Window 95 & Windows NT */
 #  define OS_CODE  0x0b
 #endif
+
 #if 0 /* QDOS */
 #  define OS_CODE  0x0c
 #endif
+
 #if 0 /* Acorn RISCOS */
 #  define OS_CODE  0x0d
 #endif
+
 #if 0 /* ???  */
 #  define OS_CODE  0x0e
 #endif
+
 #ifdef __50SERIES /* Prime/PRIMOS */
 #  define OS_CODE  0x0F
 #endif
-/* Default to UNIX */ 
+
+/* Default to UNIX */
 #ifndef OS_CODE
 #  define OS_CODE  0x03  /* assume Unix */
 #endif
@@ -273,7 +273,7 @@ static const char my_z_errmsg[][32] = {
                 sv_setpv(var, ((err) ? GetErrorString(err) : "")) ;     \
                 SvNOK_on(var);
 
-   
+
 #if defined(__SYMBIAN32__)
 # define NO_WRITEABLE_DATA
 #endif
@@ -300,13 +300,13 @@ int error_no ;
 {
     dTHX;
     char * errstr ;
-  
+
     if (error_no == Z_ERRNO) {
         errstr = Strerror(errno) ;
     }
     else
         /* errstr = gzerror(fil, &error_no) ; */
-        errstr = (char*) my_z_errmsg[2 - error_no]; 
+        errstr = (char*) my_z_errmsg[2 - error_no];
 
     return errstr ;
 }
@@ -324,7 +324,7 @@ int error_no ;
 /* return the greatest common divisor of a and b using Euclid's algorithm,
    modified to be fast when one argument much greater than the other, and
    coded to avoid unnecessary swapping */
-static unsigned 
+static unsigned
 #ifdef CAN_PROTOTYPE
 gcd(unsigned a, unsigned b)
 #else
@@ -352,7 +352,7 @@ gcd(a, b)
 }
 
 /* rotate list[0..len-1] left by rot positions, in place */
-static void 
+static void
 #ifdef CAN_PROTOTYPE
 rotate(unsigned char *list, unsigned len, unsigned rot)
 #else
@@ -515,7 +515,7 @@ void my_zcfree (voidpf opaque, voidpf ptr)
 {
     PERL_UNUSED_VAR(opaque);
     safefree(ptr);
-    return; 
+    return;
 }
 
 #endif
@@ -556,14 +556,14 @@ PostInitStream(s, flags, bufsize, windowBits)
     s->last_error = 0 ;
     s->flags    = flags ;
     s->zip_mode = (windowBits < 0) ;
-    if (flags & FLAG_CRC32) 
+    if (flags & FLAG_CRC32)
         s->crc32 = crcInitial ;
-    if (flags & FLAG_ADLER32) 
+    if (flags & FLAG_ADLER32)
         s->adler32 = adlerInitial ;
 }
 
 
-static SV* 
+static SV*
 #ifdef CAN_PROTOTYPE
 deRef(SV * sv, const char * string)
 #else
@@ -608,7 +608,7 @@ char * string ;
     dTHX;
     bool wipe = 0 ;
     STRLEN na;
-    
+
     SvGETMAGIC(sv);
     wipe = ! SvOK(sv) ;
 
@@ -654,11 +654,11 @@ flushToBuffer(di_stream* s, int flush)
 
     strm->next_in = NULL;
     strm->avail_in = 0;
-    
+
     uLong total_output = 0;
     uLong have = 0;
 
-    do 
+    do
     {
         if (output)
             output = (unsigned char *)saferealloc(output, total_output + s->bufsize);
@@ -683,7 +683,7 @@ flushToBuffer(di_stream* s, int flush)
     } while (strm->avail_out == 0);
 
     s->deflateParams_out_buffer = output;
-    s->deflateParams_out_length = total_output; 
+    s->deflateParams_out_length = total_output;
 
     return Z_OK;
 }
@@ -703,9 +703,9 @@ flushParams(di_stream* s)
 
     strm->next_in = NULL;
     strm->avail_in = 0;
-    
 
-    do 
+
+    do
     {
         if (output)
             output = (unsigned char *)saferealloc(output, total_output + s->bufsize);
@@ -719,7 +719,7 @@ flushParams(di_stream* s)
         /* fprintf(stderr, "deflateParams %d %s %lu\n", ret,
             GetErrorString(ret),  s->bufsize - strm->avail_out); */
 
-        if (ret == Z_STREAM_ERROR) 
+        if (ret == Z_STREAM_ERROR)
             break;
 
         have = s->bufsize - strm->avail_out;
@@ -730,10 +730,10 @@ flushParams(di_stream* s)
 
     if(ret == Z_STREAM_ERROR)
         safefree(output);
-    else 
+    else
     {
         s->deflateParams_out_buffer = output;
-        s->deflateParams_out_length = total_output; 
+        s->deflateParams_out_length = total_output;
     }
 
     return ret;
@@ -753,7 +753,7 @@ BOOT:
     /* Check this version of zlib is == 1 */
     if (zlibVersion()[0] != '1')
        croak("Compress::Raw::Zlib needs zlib version 1.x\n") ;
-       
+
     {
         /* Create the $os_code scalar */
         SV * os_code_sv = perl_get_sv("Compress::Raw::Zlib::gzip_os_code", GV_ADDMULTI) ;
@@ -801,10 +801,10 @@ Zip_adler32(buf, adler=adlerInitial)
        INIT:
        /* If the buffer is a reference, dereference it */
        sv = deRef(sv, "adler32") ;
-#ifdef UTF8_AVAILABLE    
+#ifdef UTF8_AVAILABLE
     if (DO_UTF8(sv) && !sv_utf8_downgrade(sv, 1))
          croak("Wide character in Compress::Raw::Zlib::adler32");
-#endif         
+#endif
        buf = (Byte*)SvPVbyte(sv, len) ;
 
        if (items < 2)
@@ -815,7 +815,7 @@ Zip_adler32(buf, adler=adlerInitial)
          adler = adlerInitial;
     OUTPUT:
         RETVAL
+
 #define Zip_crc32(buf, crc, offset) crc32(crc, buf+offset, (uInt)len-offset)
 
 uLong
@@ -823,15 +823,15 @@ Zip_crc32(buf, crc=crcInitial, offset=0)
         uLong    crc = NO_INIT
         STRLEN   len = NO_INIT
         Bytef *  buf = NO_INIT
-        STRLEN   offset       
+        STRLEN   offset
        SV *     sv = ST(0) ;
        INIT:
        /* If the buffer is a reference, dereference it */
        sv = deRef(sv, "crc32") ;
-#ifdef UTF8_AVAILABLE    
+#ifdef UTF8_AVAILABLE
     if (DO_UTF8(sv) && !sv_utf8_downgrade(sv, 1))
          croak("Wide character in Compress::Raw::Zlib::crc32");
-#endif         
+#endif
        buf = (Byte*)SvPVbyte(sv, len) ;
 
        if (offset > len)
@@ -843,12 +843,12 @@ Zip_crc32(buf, crc=crcInitial, offset=0)
          crc = SvUV(ST(1)) ;
        else
          crc = crcInitial;
+
 uLong
 crc32_combine(crc1, crc2, len2)
-        uLong    crc1 
-        uLong    crc2 
-        z_off_t   len2 
+        uLong    crc1
+        uLong    crc2
+        z_off_t   len2
        CODE:
 #ifndef AT_LEAST_ZLIB_1_2_2_1
         crc1 = crc1; crc2 = crc2 ; len2 = len2; /* Silence -Wall */
@@ -862,9 +862,9 @@ crc32_combine(crc1, crc2, len2)
 
 uLong
 adler32_combine(adler1, adler2, len2)
-        uLong    adler1 
-        uLong    adler2 
-        z_off_t   len2 
+        uLong    adler1
+        uLong    adler2
+        z_off_t   len2
        CODE:
 #ifndef AT_LEAST_ZLIB_1_2_2_1
         adler1 = adler1; adler2 = adler2 ; len2 = len2; /* Silence -Wall */
@@ -892,8 +892,8 @@ _deflateInit(flags,level, method, windowBits, memLevel, strategy, bufsize, dicti
     int err ;
     deflateStream s ;
 
-    if (trace) 
-        warn("in _deflateInit(level=%d, method=%d, windowBits=%d, memLevel=%d, strategy=%d, bufsize=%ld dictionary=%p)\n", 
+    if (trace)
+        warn("in _deflateInit(level=%d, method=%d, windowBits=%d, memLevel=%d, strategy=%d, bufsize=%ld dictionary=%p)\n",
        level, method, windowBits, memLevel, strategy, bufsize, dictionary) ;
     if ((s = InitStream() )) {
 
@@ -903,7 +903,7 @@ _deflateInit(flags,level, method, windowBits, memLevel, strategy, bufsize, dicti
         s->MemLevel   = memLevel;
         s->Strategy   = strategy;
 
-        err = deflateInit2(&(s->stream), level, 
+        err = deflateInit2(&(s->stream), level,
                           method, windowBits, memLevel, strategy);
 
         if (trace) {
@@ -914,12 +914,12 @@ _deflateInit(flags,level, method, windowBits, memLevel, strategy, bufsize, dicti
        /* Check if a dictionary has been specified */
        SvGETMAGIC(dictionary);
        if (err == Z_OK && SvPOK(dictionary) && SvCUR(dictionary)) {
-#ifdef UTF8_AVAILABLE    
+#ifdef UTF8_AVAILABLE
             if (DO_UTF8(dictionary) && !sv_utf8_downgrade(dictionary, 1))
                 croak("Wide character in Compress::Raw::Zlib::Deflate::new dicrionary parameter");
-#endif         
+#endif
            err = deflateSetDictionary(&(s->stream), (const Bytef*) SvPVX(dictionary), SvCUR(dictionary)) ;
-        if (trace) 
+        if (trace)
             warn("deflateSetDictionary returned %d\n", err);
            s->dict_adler = s->stream.adler ;
        }
@@ -930,13 +930,13 @@ _deflateInit(flags,level, method, windowBits, memLevel, strategy, bufsize, dicti
        }
        else
            PostInitStream(s, flags, bufsize, windowBits) ;
-        
+
     }
     else
         err = Z_MEM_ERROR ;
 
     {
-        SV* obj = sv_setref_pv(sv_newmortal(), 
+        SV* obj = sv_setref_pv(sv_newmortal(),
             "Compress::Raw::Zlib::deflateStream", (void*)s);
         XPUSHs(obj);
     }
@@ -955,7 +955,7 @@ _inflateInit(flags, windowBits, bufsize, dictionary)
   ALIAS:
     _inflateScanInit = 1
   PPCODE:
+
     int err = Z_OK ;
     inflateStream s ;
 #ifndef MAGIC_APPEND
@@ -980,7 +980,7 @@ _inflateInit(flags, windowBits, bufsize, dictionary)
         if (s->WindowBits < 0) {
             STRLEN dlen;
             const Bytef* b = (const Bytef*)SvPVbyte(dictionary, dlen);
-            err = inflateSetDictionary(&(s->stream), 
+            err = inflateSetDictionary(&(s->stream),
                 b, dlen);
             if (err != Z_OK) {
                 Safefree(s) ;
@@ -1006,9 +1006,9 @@ _inflateInit(flags, windowBits, bufsize, dictionary)
        err = Z_MEM_ERROR ;
 
     {
-        SV* obj = sv_setref_pv(sv_newmortal(), 
-                   ix == 1 
-                   ? "Compress::Raw::Zlib::inflateScanStream" 
+        SV* obj = sv_setref_pv(sv_newmortal(),
+                   ix == 1
+                   ? "Compress::Raw::Zlib::inflateScanStream"
                    :  "Compress::Raw::Zlib::inflateStream",
                    (void*)s);
         XPUSHs(obj);
@@ -1018,7 +1018,7 @@ _inflateInit(flags, windowBits, bufsize, dictionary)
        setDUALstatus(sv, err);
         XPUSHs(sv) ;
     }
+
 
 
 MODULE = Compress::Raw::Zlib PACKAGE = Compress::Raw::Zlib::deflateStream
@@ -1039,11 +1039,11 @@ deflateReset(s)
     OUTPUT:
       RETVAL
 
-DualType 
+DualType
 deflate (s, buf, output)
     Compress::Raw::Zlib::deflateStream s
     SV *       buf
-    SV *       output 
+    SV *       output
     uInt       cur_length = NO_INIT
     uInt       increment = NO_INIT
     uInt       prefix    = NO_INIT
@@ -1055,15 +1055,15 @@ deflate (s, buf, output)
 
     /* If the input buffer is a reference, dereference it */
     buf = deRef(buf, "deflate") ;
+
     /* initialise the input buffer */
-#ifdef UTF8_AVAILABLE    
+#ifdef UTF8_AVAILABLE
     if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1))
          croak("Wide character in Compress::Raw::Zlib::Deflate::deflate input parameter");
-#endif         
+#endif
     s->stream.next_in = (Bytef*)SvPV_nomg(buf, origlen) ;
     s->stream.avail_in = origlen;
-    
+
     if (s->flags & FLAG_CRC32)
         s->crc32 = crc32(s->crc32, s->stream.next_in, s->stream.avail_in) ;
 
@@ -1072,15 +1072,16 @@ deflate (s, buf, output)
 
     /* and retrieve the output buffer */
     output = deRef_l(output, "deflate") ;
-#ifdef UTF8_AVAILABLE    
+#ifdef UTF8_AVAILABLE
     if (DO_UTF8(output) && !sv_utf8_downgrade(output, 1))
          croak("Wide character in Compress::Raw::Zlib::Deflate::deflate output parameter");
-#endif         
+#endif
 
-    if((s->flags & FLAG_APPEND) != FLAG_APPEND) {
-        SvCUR_set(output, 0);
-        /* sv_setpvn(output, "", 0); */
-    }
+     if((s->flags & FLAG_APPEND) == FLAG_APPEND) {
+         SvOOK_off(output);
+     } else {
+         SvCUR_set(output, 0);
+     }
     prefix = cur_length =  SvCUR(output) ;
     s->stream.next_out = (Bytef*) SvPVX(output) + cur_length;
     increment =  SvLEN(output) -  cur_length;
@@ -1104,8 +1105,8 @@ deflate (s, buf, output)
              s->stream.next_out = (Bytef*) Sv_Grow(output, SvLEN(output) + plen - s->stream.avail_out) ;
              s->stream.next_out += cur_length;
         }
-        
-        Copy(s->deflateParams_out_buffer, s->stream.next_out, plen, Bytef) ;   
+
+        Copy(s->deflateParams_out_buffer, s->stream.next_out, plen, Bytef) ;
         cur_length += plen;
         SvCUR_set(output, cur_length);
         s->stream.next_out += plen ;
@@ -1131,7 +1132,7 @@ deflate (s, buf, output)
         }
 
         if (trace) {
-          printf("DEFLATE Avail In %d, Out %d\n", s->stream.avail_in, s->stream.avail_out); 
+          printf("DEFLATE Avail In %d, Out %d\n", s->stream.avail_in, s->stream.avail_out);
           DispStream(s, "BEFORE");
           /* Perl_sv_dump(output); */
         }
@@ -1142,17 +1143,17 @@ deflate (s, buf, output)
             int done = increment -  s->stream.avail_out ;
             printf("std DEFLATEr returned %d '%s'  avail in %d, out %d wrote %d\n", RETVAL,
             GetErrorString(RETVAL), s->stream.avail_in,
-s->stream.avail_out, done); 
+s->stream.avail_out, done);
         }
         */
-    
+
         if (trace) {
             printf("DEFLATE returned %d %s, avail in %d, out %d\n", RETVAL,
-           GetErrorString(RETVAL), s->stream.avail_in, s->stream.avail_out); 
+           GetErrorString(RETVAL), s->stream.avail_in, s->stream.avail_out);
             DispStream(s, "AFTER");
         }
 
-        if (RETVAL != Z_OK) 
+        if (RETVAL != Z_OK)
             break;
     }
 
@@ -1167,7 +1168,7 @@ s->stream.avail_out, done);
     }
     OUTPUT:
        RETVAL
-  
+
 
 void
 DESTROY(s)
@@ -1188,28 +1189,29 @@ DESTROY(s)
 DualType
 flush(s, output, f=Z_FINISH)
     Compress::Raw::Zlib::deflateStream s
-    SV * output 
+    SV * output
     int  f
     uInt       cur_length = NO_INIT
     uInt       increment = NO_INIT
     uInt       prefix    = NO_INIT
     uLong     bufinc = NO_INIT
-    uLong     availableout = NO_INIT    
+    uLong     availableout = NO_INIT
   CODE:
     bufinc = s->bufsize;
-    
-  
-  
+
+
+
     /* retrieve the output buffer */
     output = deRef_l(output, "flush") ;
-#ifdef UTF8_AVAILABLE    
+#ifdef UTF8_AVAILABLE
     if (DO_UTF8(output) && !sv_utf8_downgrade(output, 1))
          croak("Wide character in Compress::Raw::Zlib::Deflate::flush input parameter");
-#endif         
-    if((s->flags & FLAG_APPEND) != FLAG_APPEND) {
-        SvCUR_set(output, 0);
-        /* sv_setpvn(output, "", 0); */
-    }
+#endif
+     if((s->flags & FLAG_APPEND) == FLAG_APPEND) {
+         SvOOK_off(output);
+     } else {
+         SvCUR_set(output, 0);
+     }
     prefix = cur_length =  SvCUR(output) ;
     s->stream.next_out = (Bytef*) SvPVX(output) + cur_length;
     increment =  SvLEN(output) -  cur_length;
@@ -1228,13 +1230,13 @@ flush(s, output, f=Z_FINISH)
         uLong plen = s->deflateParams_out_length ;
         /* printf("Copy %lu bytes saved data\n", plen); */
         if (s->stream.avail_out < plen) {
-            /* printf("GROW from %d to %lu\n", s->stream.avail_out, 
+            /* printf("GROW from %d to %lu\n", s->stream.avail_out,
                         SvLEN(output) + plen - s->stream.avail_out); */
             s->stream.next_out = (Bytef*) Sv_Grow(output, SvLEN(output) + plen - s->stream.avail_out) ;
             s->stream.next_out += cur_length;
         }
-        
-        Copy(s->deflateParams_out_buffer, s->stream.next_out, plen, Bytef) ;   
+
+        Copy(s->deflateParams_out_buffer, s->stream.next_out, plen, Bytef) ;
         cur_length += plen;
         SvCUR_set(output, cur_length);
         s->stream.next_out += plen ;
@@ -1248,7 +1250,7 @@ flush(s, output, f=Z_FINISH)
 #endif
 
     for (;;) {
-        if (s->stream.avail_out == 0) {        
+        if (s->stream.avail_out == 0) {
             /* consumed all the available output, so extend it */
             s->stream.next_out = (Bytef*) Sv_Grow(output, SvLEN(output) + bufinc) ;
             cur_length += increment ;
@@ -1257,11 +1259,11 @@ flush(s, output, f=Z_FINISH)
             s->stream.avail_out = increment;
             bufinc *= 2 ;
         }
-        
+
         availableout = s->stream.avail_out ;
-        
+
         if (trace) {
-          printf("flush (%d) DEFLATE Avail In %d, Out %d\n", f, s->stream.avail_in, s->stream.avail_out); 
+          printf("flush (%d) DEFLATE Avail In %d, Out %d\n", f, s->stream.avail_in, s->stream.avail_out);
           DispStream(s, "BEFORE");
           /* Perl_sv_dump(output); */
         }
@@ -1275,29 +1277,29 @@ flush(s, output, f=Z_FINISH)
 s->stream.avail_out, done);
         }
         */
-    
+
         if (trace) {
             printf("flush DEFLATE returned %d '%s', avail in %d, out %d\n", RETVAL,
-            GetErrorString(RETVAL), s->stream.avail_in, s->stream.avail_out); 
+            GetErrorString(RETVAL), s->stream.avail_in, s->stream.avail_out);
             DispStream(s, "AFTER");
         }
 
         /* Ignore the second of two consecutive flushes: */
-        if (availableout == s->stream.avail_out && RETVAL == Z_BUF_ERROR) 
-            RETVAL = Z_OK; 
-        
+        if (availableout == s->stream.avail_out && RETVAL == Z_BUF_ERROR)
+            RETVAL = Z_OK;
+
         /* deflate has finished flushing only when it hasn't used up
-         * all the available space in the output buffer: 
+         * all the available space in the output buffer:
          */
         if (s->stream.avail_out != 0 || RETVAL != Z_OK )
             break;
     }
-  
+
     RETVAL =  (RETVAL == Z_STREAM_END ? Z_OK : RETVAL) ;
     s->last_error = RETVAL ;
 
     s->compressedBytes    += cur_length + increment - prefix - s->stream.avail_out ;
-  
+
     if (RETVAL == Z_OK) {
         SvPOK_only(output);
         SvCUR_set(output, cur_length + increment - s->stream.avail_out) ;
@@ -1316,7 +1318,7 @@ _deflateParams(s, flags, level, strategy, bufsize)
        uLong   bufsize
        bool changed = FALSE;
     CODE:
-        /* printf("_deflateParams(Flags %d Level %d Strategy %d Bufsize %d)\n", flags, level, strategy, bufsize); 
+        /* printf("_deflateParams(Flags %d Level %d Strategy %d Bufsize %d)\n", flags, level, strategy, bufsize);
         printf("Before -- Level %d, Strategy %d, Bufsize %d\n", s->Level, s->Strategy, s->bufsize); */
         if (flags & 1 && level != s->Level) {
             s->Level = level ;
@@ -1327,17 +1329,17 @@ _deflateParams(s, flags, level, strategy, bufsize)
             changed = TRUE;
         }
         if (flags & 4)
-            s->bufsize = bufsize; 
+            s->bufsize = bufsize;
         if (changed) {
 #ifdef SETP_BYTE
-            s->stream.avail_in = 0; 
+            s->stream.avail_in = 0;
             s->stream.next_out = &(s->deflateParams_out_byte) ;
             s->stream.avail_out = 1;
             RETVAL = deflateParams(&(s->stream), s->Level, s->Strategy);
-            s->deflateParams_out_valid = 
+            s->deflateParams_out_valid =
             (RETVAL == Z_OK && s->stream.avail_out == 0) ;
 #else
-            /* printf("Level %d Strategy %d, Prev Len %d\n", 
+            /* printf("Level %d Strategy %d, Prev Len %d\n",
                 s->Level, s->Strategy, s->deflateParams_out_length); */
             RETVAL = flushParams(s);
 #endif
@@ -1446,7 +1448,7 @@ msg(s)
     OUTPUT:
        RETVAL
 
-int 
+int
 deflateTune(s, good_length, max_lazy, nice_length, max_chain)
             Compress::Raw::Zlib::deflateStream   s
             int good_length
@@ -1463,7 +1465,7 @@ deflateTune(s, good_length, max_lazy, nice_length, max_chain)
 #endif
     OUTPUT:
        RETVAL
-    
+
 
 MODULE = Compress::Raw::Zlib PACKAGE = Compress::Raw::Zlib::inflateStream
 
@@ -1483,23 +1485,23 @@ inflateReset(s)
     OUTPUT:
       RETVAL
 
-DualType 
+DualType
 inflate (s, buf, output, eof=FALSE)
     Compress::Raw::Zlib::inflateStream s
     SV *       buf
-    SV *       output 
-    bool       eof 
+    SV *       output
+    bool       eof
     uInt       cur_length = 0;
     uInt       prefix_length = 0;
     int            increment = 0;
     uLong   bufinc = NO_INIT
     STRLEN  na = NO_INIT ;
   PREINIT:
-#ifdef UTF8_AVAILABLE    
+#ifdef UTF8_AVAILABLE
     bool       out_utf8  = FALSE;
-#endif    
+#endif
     STRLEN     origlen;
-  CODE: 
+  CODE:
     bufinc = s->bufsize;
     /* If the buffer is a reference, dereference it */
     buf = deRef(buf, "inflate") ;
@@ -1509,40 +1511,42 @@ inflate (s, buf, output, eof=FALSE)
             croak("Compress::Raw::Zlib::Inflate::inflate input parameter cannot be read-only when ConsumeInput is specified");
         SvPV_force(buf, na);
     }
-#ifdef UTF8_AVAILABLE    
+#ifdef UTF8_AVAILABLE
     if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1))
          croak("Wide character in Compress::Raw::Zlib::Inflate::inflate input parameter");
-#endif         
-    
+#endif
+
     /* initialise the input buffer */
     s->stream.next_in = (Bytef*)SvPV_nomg(buf, origlen) ;
     s->stream.avail_in = origlen ;
-       
+
     /* and retrieve the output buffer */
     output = deRef_l(output, "inflate") ;
-#ifdef UTF8_AVAILABLE    
+#ifdef UTF8_AVAILABLE
     if (DO_UTF8(output))
          out_utf8 = TRUE ;
     if (DO_UTF8(output) && !sv_utf8_downgrade(output, 1))
          croak("Wide character in Compress::Raw::Zlib::Inflate::inflate output parameter");
-#endif         
-    if((s->flags & FLAG_APPEND) != FLAG_APPEND) {
-        SvCUR_set(output, 0);
-    }
-   
+#endif
+     if((s->flags & FLAG_APPEND) == FLAG_APPEND) {
+         SvOOK_off(output);
+     } else {
+         SvCUR_set(output, 0);
+     }
+
     /* Assume no output buffer - the code below will update if there is any available */
     s->stream.avail_out = 0;
 
 
     if (SvLEN(output)) {
         prefix_length = cur_length =  SvCUR(output) ;
-    
+
         if (s->flags & FLAG_LIMIT_OUTPUT && SvLEN(output) - cur_length - 1 < bufinc)
         {
             Sv_Grow(output, bufinc + cur_length + 1) ;
         }
-    
-        /* Only setup the stream output pointers if there is spare 
+
+        /* Only setup the stream output pointers if there is spare
            capacity in the outout SV
         */
         if (SvLEN(output) > cur_length + 1)
@@ -1552,10 +1556,10 @@ inflate (s, buf, output, eof=FALSE)
             s->stream.avail_out = increment;
         }
     }
-    
+
 
     s->bytesInflated = 0;
-    
+
     RETVAL = Z_OK;
 
     while (RETVAL == Z_OK) {
@@ -1566,35 +1570,35 @@ inflate (s, buf, output, eof=FALSE)
             s->stream.next_out += cur_length ;
             increment = bufinc ;
             s->stream.avail_out = increment;
-            bufinc *= 2 ; 
+            bufinc *= 2 ;
         }
 
         /* printf("INFLATE Availl In %d, Out %d\n", s->stream.avail_in,
- s->stream.avail_out); 
+ s->stream.avail_out);
 DispStream(s, "BEFORE");
 Perl_sv_dump(output); */
         RETVAL = inflate(&(s->stream), Z_SYNC_FLUSH);
         /* printf("INFLATE returned %d %s, avail in %d, out %d\n", RETVAL,
  GetErrorString(RETVAL), s->stream.avail_in, s->stream.avail_out); */
 
-    
+
         if (RETVAL == Z_NEED_DICT && s->dictionary) {
             STRLEN dlen;
             const Bytef* b = (const Bytef*)SvPV(s->dictionary, dlen) ;
             s->dict_adler = s->stream.adler ;
-            RETVAL = inflateSetDictionary(&(s->stream), 
+            RETVAL = inflateSetDictionary(&(s->stream),
                 b, dlen);
             if (RETVAL == Z_OK)
                 continue;
         }
-        
-        if (s->flags & FLAG_LIMIT_OUTPUT && 
+
+        if (s->flags & FLAG_LIMIT_OUTPUT &&
                 (RETVAL == Z_OK || RETVAL == Z_BUF_ERROR )) {
             if (s->stream.avail_out == 0)
                 RETVAL = Z_BUF_ERROR;
             break;
         }
-        if (s->flags & FLAG_LIMIT_OUTPUT && 
+        if (s->flags & FLAG_LIMIT_OUTPUT &&
                 (RETVAL == Z_OK || RETVAL == Z_BUF_ERROR ))
             break;
 
@@ -1611,7 +1615,7 @@ Perl_sv_dump(output); */
             }
         }
     }
-#ifdef NEED_DUMMY_BYTE_AT_END 
+#ifdef NEED_DUMMY_BYTE_AT_END
     if (eof && RETVAL == Z_OK && s->flags & FLAG_LIMIT_OUTPUT == 0) {
         Bytef* nextIn =  s->stream.next_in;
         uInt availIn =  s->stream.avail_in;
@@ -1633,7 +1637,7 @@ Perl_sv_dump(output); */
 #else
     PERL_UNUSED_VAR(eof);
 #endif
-    
+
     s->last_error = RETVAL ;
     if (RETVAL == Z_OK || RETVAL == Z_STREAM_END || RETVAL == Z_BUF_ERROR || RETVAL == Z_DATA_ERROR) {
           unsigned in ;
@@ -1645,20 +1649,20 @@ Perl_sv_dump(output); */
         SvPOK_only(output);
         SvCUR_set(output, prefix_length + s->bytesInflated) ;
        *SvEND(output) = '\0';
-#ifdef UTF8_AVAILABLE    
+#ifdef UTF8_AVAILABLE
         if (out_utf8)
             sv_utf8_upgrade(output);
-#endif        
+#endif
         SvSETMAGIC(output);
 
         if (s->flags & FLAG_CRC32 )
-            s->crc32 = crc32(s->crc32, 
-                               (const Bytef*)SvPVX(output)+prefix_length, 
+            s->crc32 = crc32(s->crc32,
+                               (const Bytef*)SvPVX(output)+prefix_length,
                                SvCUR(output)-prefix_length) ;
 
-        if (s->flags & FLAG_ADLER32) 
-            s->adler32 = adler32(s->adler32, 
-                               (const Bytef*)SvPVX(output)+prefix_length, 
+        if (s->flags & FLAG_ADLER32)
+            s->adler32 = adler32(s->adler32,
+                               (const Bytef*)SvPVX(output)+prefix_length,
                                SvCUR(output)-prefix_length) ;
 
        /* fix the input buffer */
@@ -1666,7 +1670,7 @@ Perl_sv_dump(output); */
            in = s->stream.avail_in ;
            SvCUR_set(buf, in) ;
            if (in)
-               Move(s->stream.next_in, SvPVX(buf), in, char) ; 
+               Move(s->stream.next_in, SvPVX(buf), in, char) ;
             *SvEND(buf) = '\0';
             SvSETMAGIC(buf);
        }
@@ -1700,23 +1704,23 @@ uncompressedBytes(s)
        RETVAL
 
 
-DualType 
+DualType
 inflateSync (s, buf)
     Compress::Raw::Zlib::inflateStream s
     SV *       buf
   CODE:
-  
+
     /* If the buffer is a reference, dereference it */
     buf = deRef(buf, "inflateSync") ;
-#ifdef UTF8_AVAILABLE    
+#ifdef UTF8_AVAILABLE
     if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1))
          croak("Wide character in Compress::Raw::Zlib::Inflate::inflateSync");
-#endif         
-    
+#endif
+
     /* initialise the input buffer */
     s->stream.next_in = (Bytef*)SvPV_force_nomg_nolen(buf) ;
     s->stream.avail_in = SvCUR(buf) ;
-       
+
     /* inflateSync doesn't create any output */
     s->stream.next_out = (Bytef*) NULL;
     s->stream.avail_out = 0;
@@ -1729,7 +1733,7 @@ inflateSync (s, buf)
        unsigned in = s->stream.avail_in ;
        SvCUR_set(buf, in) ;
        if (in)
-           Move(s->stream.next_in, SvPVX(buf), in, char) ;     
+           Move(s->stream.next_in, SvPVX(buf), in, char) ;
         *SvEND(buf) = '\0';
         SvSETMAGIC(buf);
     }
@@ -1867,7 +1871,7 @@ inflateReset(s)
     OUTPUT:
       RETVAL
 
-DualType 
+DualType
 scan(s, buf, out=NULL, eof=FALSE)
     Compress::Raw::Zlib::inflateScanStream     s
     SV *       buf
@@ -1884,15 +1888,15 @@ scan(s, buf, out=NULL, eof=FALSE)
         croak("scan needs zlib 1.2.1 or better");
 #else
     buf = deRef(buf, "inflateScan") ;
-#ifdef UTF8_AVAILABLE    
+#ifdef UTF8_AVAILABLE
     if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1))
         croak("Wide character in Compress::Raw::Zlib::InflateScan::scan input parameter");
-#endif         
+#endif
     /* initialise the input buffer */
     s->stream.next_in = (Bytef*)SvPV_force_nomg_nolen(buf) ;
     s->stream.avail_in = SvCUR(buf) ;
     start_len = s->stream.avail_in ;
-    s->bytesInflated = 0 ; 
+    s->bytesInflated = 0 ;
     do
     {
         if (s->stream.avail_in == 0) {
@@ -1917,11 +1921,11 @@ scan(s, buf, out=NULL, eof=FALSE)
             break ;
 
         if (s->flags & FLAG_CRC32 )
-            s->crc32 = crc32(s->crc32, s->window + s->window_have, 
+            s->crc32 = crc32(s->crc32, s->window + s->window_have,
                              WINDOW_SIZE - s->window_have - s->stream.avail_out);
 
-        if (s->flags & FLAG_ADLER32) 
-            s->adler32 = adler32(s->adler32, s->window + s->window_have, 
+        if (s->flags & FLAG_ADLER32)
+            s->adler32 = adler32(s->adler32, s->window + s->window_have,
                                  WINDOW_SIZE - s->window_have - s->stream.avail_out);
 
         s->uncompressedBytes =
@@ -1974,7 +1978,7 @@ scan(s, buf, out=NULL, eof=FALSE)
             unsigned in = s->stream.avail_in ;
             SvCUR_set(buf, in) ;
             if (in)
-                Move(s->stream.next_in, SvPVX(buf), in, char) ;        
+                Move(s->stream.next_in, SvPVX(buf), in, char) ;
             *SvEND(buf) = '\0';
             SvSETMAGIC(buf);
         }
@@ -2098,7 +2102,7 @@ _createDeflateStream(inf_s, flags,level, method, windowBits, memLevel, strategy,
         s->MemLevel   = memLevel;
         s->Strategy   = strategy;
 
-        err = deflateInit2(&(s->stream), level, 
+        err = deflateInit2(&(s->stream), level,
                           method, windowBits, memLevel, strategy);
 
        if (err == Z_OK) {
@@ -2126,7 +2130,7 @@ _createDeflateStream(inf_s, flags,level, method, windowBits, memLevel, strategy,
     else
         err = Z_MEM_ERROR ;
 
-    XPUSHs(sv_setref_pv(sv_newmortal(), 
+    XPUSHs(sv_setref_pv(sv_newmortal(),
             "Compress::Raw::Zlib::deflateStream", (void*)s));
     if (GIMME == G_ARRAY) {
         SV * sv = sv_2mortal(newSViv(err)) ;
@@ -2160,4 +2164,3 @@ adler32(s)
        RETVAL = s->adler32 ;
     OUTPUT:
        RETVAL
-
index cf7126b..59cda23 100644 (file)
@@ -10,7 +10,7 @@ use warnings ;
 use bytes ;
 our ($VERSION, $XS_VERSION, @ISA, @EXPORT, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD, %DEFLATE_CONSTANTS, @DEFLATE_CONSTANTS);
 
-$VERSION = '2.093';
+$VERSION = '2.096';
 $XS_VERSION = $VERSION; 
 $VERSION = eval $VERSION;
 
@@ -1559,7 +1559,7 @@ of I<Compress::Raw::Zlib>.
 
 =head1 SUPPORT
 
-General feedback/questions/bug reports should be sent to 
+General feedback/questions/bug reports should be sent to
 L<https://github.com/pmqs/Compress-Raw-Zlib/issues> (preferred) or
 L<https://rt.cpan.org/Public/Dist/Display.html?Name=Compress-Raw-Zlib>.
 
@@ -1596,7 +1596,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2020 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 d7cd513..64c8944 100644 (file)
@@ -14,8 +14,8 @@ use Test::More  ;
 use CompTestUtils;
 
 
-BEGIN 
-{ 
+BEGIN
+{
     # use Test::NoWarnings, if available
     my $extra = 0 ;
     $extra = 1
@@ -24,13 +24,13 @@ BEGIN
 
     my $count = 0 ;
     if ($] < 5.005) {
-        $count = 237 ;
+        $count = 245 ;
     }
     elsif ($] >= 5.006) {
-        $count = 325 ;
+        $count = 349 ;
     }
     else {
-        $count = 280 ;
+        $count = 304 ;
     }
 
     plan tests => $count + $extra;
@@ -50,7 +50,7 @@ my $len   = length $hello ;
 
 # Check zlib_version and ZLIB_VERSION are the same.
 SKIP: {
-    skip "TEST_SKIP_VERSION_CHECK is set", 1 
+    skip "TEST_SKIP_VERSION_CHECK is set", 1
         if $ENV{TEST_SKIP_VERSION_CHECK};
     is Compress::Raw::Zlib::zlib_version, ZLIB_VERSION,
         "ZLIB_VERSION matches Compress::Raw::Zlib::zlib_version" ;
@@ -104,12 +104,12 @@ SKIP: {
 
     my $hello = "I am a HAL 9000 computer" ;
     my @hello = split('', $hello) ;
-    my ($err, $x, $X, $status); 
+    my ($err, $x, $X, $status);
+
     ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( -Bufsize => 1 ), "Create deflate object" );
     ok $x, "Compress::Raw::Zlib::Deflate ok" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
+
     ok ! defined $x->msg() ;
     is $x->total_in(), 0, "total_in() == 0" ;
     is $x->total_out(), 0, "total_out() == 0" ;
@@ -120,26 +120,26 @@ SKIP: {
     {
         $status = $x->deflate($_, $X) ;
         last unless $status == Z_OK ;
-    
+
         $Answer .= $X ;
     }
-     
+
     cmp_ok $status, '==', Z_OK, "deflate returned Z_OK" ;
-    
+
     cmp_ok  $x->flush($X), '==', Z_OK, "flush returned Z_OK" ;
     $Answer .= $X ;
-     
+
     ok ! defined $x->msg()  ;
     is $x->total_in(), length $hello, "total_in ok" ;
     is $x->total_out(), length $Answer, "total_out ok" ;
-     
+
     my @Answer = split('', $Answer) ;
-     
+
     my $k;
     ok(($k, $err) = new Compress::Raw::Zlib::Inflate( {-Bufsize => 1}) );
     ok $k, "Compress::Raw::Zlib::Inflate ok" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
+
     ok ! defined $k->msg(), "No error messages" ;
     is $k->total_in(), 0, "total_in() == 0" ;
     is $k->total_out(), 0, "total_out() == 0" ;
@@ -151,9 +151,9 @@ SKIP: {
         $status = $k->inflate($_, $Z) ;
         $GOT .= $Z ;
         last if $status == Z_STREAM_END or $status != Z_OK ;
-     
+
     }
-     
+
     cmp_ok $status, '==', Z_STREAM_END, "Got Z_STREAM_END" ;
     is $GOT, $hello, "uncompressed data matches ok" ;
     ok ! defined $k->msg(), "No error messages" ;
@@ -168,34 +168,34 @@ SKIP: {
     # ==============================
 
     my $hello = 6529 ;
+
     ok  my ($x, $err) = new Compress::Raw::Zlib::Deflate ( -Bufsize => 1, -AppendOutput => 1 ) ;
     ok $x ;
     cmp_ok $err, '==', Z_OK ;
+
     my $status;
     my $Answer = '';
-     
+
     cmp_ok $x->deflate($hello, $Answer), '==', Z_OK ;
-    
+
     cmp_ok $x->flush($Answer), '==', Z_OK ;
-     
+
     my @Answer = split('', $Answer) ;
-     
+
     my $k;
     ok(($k, $err) = new Compress::Raw::Zlib::Inflate( {-Bufsize => 1, -AppendOutput =>1}) );
     ok $k ;
     cmp_ok $err, '==', Z_OK ;
-     
+
     #my $GOT = '';
     my $GOT ;
     foreach (@Answer)
     {
         $status = $k->inflate($_, $GOT) ;
         last if $status == Z_STREAM_END or $status != Z_OK ;
-     
+
     }
-     
+
     cmp_ok $status, '==', Z_STREAM_END ;
     is $GOT, $hello ;
 
@@ -211,11 +211,11 @@ SKIP: {
 
     my $hello = "I am a HAL 9000 computer" ;
     my @hello = split('', $hello) ;
-     
+
     ok  my ($x, $err) = new Compress::Raw::Zlib::Deflate ( {-Bufsize => 1, -AppendOutput =>1} ) ;
     ok $x ;
     cmp_ok $err, '==', Z_OK ;
-     
+
     my $status;
     my $X;
     foreach (@hello)
@@ -223,32 +223,32 @@ SKIP: {
         $status = $x->deflate($_, $X) ;
         last unless $status == Z_OK ;
     }
-     
+
     cmp_ok $status, '==', Z_OK ;
-     
+
     cmp_ok $x->flush($X), '==', Z_OK ;
-     
-     
+
+
     my @Answer = split('', $X) ;
-     
+
     my $k;
     ok(($k, $err) = new Compress::Raw::Zlib::Inflate( {-Bufsize => 1, -AppendOutput =>1}));
     ok $k ;
     cmp_ok $err, '==', Z_OK ;
-     
+
     my $Z;
     foreach (@Answer)
     {
         $status = $k->inflate($_, $Z) ;
         last if $status == Z_STREAM_END or $status != Z_OK ;
-     
+
     }
-     
+
     cmp_ok $status, '==', Z_STREAM_END ;
     is $Z, $hello ;
 }
 
+
 {
 
     title "deflate/inflate - larger buffer";
@@ -258,34 +258,34 @@ SKIP: {
     my $contents = '' ;
     foreach (1 .. 50000)
       { $contents .= chr int rand 255 }
-    
-    
+
+
     ok my ($x, $err) = new Compress::Raw::Zlib::Deflate() ;
     ok $x ;
     cmp_ok $err, '==', Z_OK ;
-     
+
     my (%X, $Y, %Z, $X, $Z);
     #cmp_ok $x->deflate($contents, $X{key}), '==', Z_OK ;
     cmp_ok $x->deflate($contents, $X), '==', Z_OK ;
-    
+
     #$Y = $X{key} ;
     $Y = $X ;
-     
-     
+
+
     #cmp_ok $x->flush($X{key}), '==', Z_OK ;
     #$Y .= $X{key} ;
     cmp_ok $x->flush($X), '==', Z_OK ;
     $Y .= $X ;
-     
-     
+
+
+
     my $keep = $Y ;
 
     my $k;
     ok(($k, $err) = new Compress::Raw::Zlib::Inflate() );
     ok $k ;
     cmp_ok $err, '==', Z_OK ;
-     
+
     #cmp_ok $k->inflate($Y, $Z{key}), '==', Z_STREAM_END ;
     #ok $contents eq $Z{key} ;
     cmp_ok $k->inflate($Y, $Z), '==', Z_STREAM_END ;
@@ -296,16 +296,16 @@ SKIP: {
     ok (($k, $err) = new Compress::Raw::Zlib::Inflate(-AppendOutput => 1)) ;
     ok $k ;
     cmp_ok $err, '==', Z_OK ;
-    
-    my $s ; 
+
+    my $s ;
     my $out ;
     my @bits = split('', $keep) ;
     foreach my $bit (@bits) {
         $s = $k->inflate($bit, $out) ;
     }
-    
+
     cmp_ok $s, '==', Z_STREAM_END ;
-     
+
     ok $contents eq $out ;
 
 
@@ -319,16 +319,16 @@ SKIP: {
     my $dictionary = "hello" ;
     ok my $x = new Compress::Raw::Zlib::Deflate({-Level => Z_BEST_COMPRESSION,
                             -Dictionary => $dictionary}) ;
+
     my $dictID = $x->dict_adler() ;
 
     my ($X, $Y, $Z);
     cmp_ok $x->deflate($hello, $X), '==', Z_OK;
     cmp_ok $x->flush($Y), '==', Z_OK;
     $X .= $Y ;
+
     ok my $k = new Compress::Raw::Zlib::Inflate(-Dictionary => $dictionary) ;
+
     cmp_ok $k->inflate($X, $Z), '==', Z_STREAM_END;
     is $k->dict_adler(), $dictID;
     is $hello, $Z ;
@@ -338,18 +338,18 @@ SKIP: {
 title 'inflate - check remaining buffer after Z_STREAM_END';
 #           and that ConsumeInput works.
 # ===================================================
+
 for my $consume ( 0 .. 1)
 {
     ok my $x = new Compress::Raw::Zlib::Deflate(-Level => Z_BEST_COMPRESSION ) ;
+
     my ($X, $Y, $Z);
     cmp_ok $x->deflate($hello, $X), '==', Z_OK;
     cmp_ok $x->flush($Y), '==', Z_OK;
     $X .= $Y ;
+
     ok my $k = new Compress::Raw::Zlib::Inflate( -ConsumeInput => $consume) ;
+
     my $first = substr($X, 0, 2) ;
     my $remember_first = $first ;
     my $last  = substr($X, 2) ;
@@ -381,12 +381,12 @@ for my $consume ( 0 .. 1)
 
     title 'Check - MAX_WBITS';
     # =================
-    
+
     my $hello = "Test test test test test";
     my @hello = split('', $hello) ;
-     
-    ok  my ($x, $err) = 
-       new Compress::Raw::Zlib::Deflate ( -Bufsize => 1, 
+
+    ok  my ($x, $err) =
+       new Compress::Raw::Zlib::Deflate ( -Bufsize => 1,
                                      -WindowBits => -MAX_WBITS(),
                                      -AppendOutput => 1 ) ;
     ok $x ;
@@ -399,42 +399,42 @@ for my $consume ( 0 .. 1)
         $status = $x->deflate($_, $Answer) ;
         last unless $status == Z_OK ;
     }
-     
+
     cmp_ok $status, '==', Z_OK ;
-    
+
     cmp_ok $x->flush($Answer), '==', Z_OK ;
-     
+
     my @Answer = split('', $Answer) ;
-    # Undocumented corner -- extra byte needed to get inflate to return 
-    # Z_STREAM_END when done.  
-    push @Answer, " " ; 
-     
+    # Undocumented corner -- extra byte needed to get inflate to return
+    # Z_STREAM_END when done.
+    push @Answer, " " ;
+
     my $k;
-    ok(($k, $err) = new Compress::Raw::Zlib::Inflate( 
-                       {-Bufsize => 1, 
+    ok(($k, $err) = new Compress::Raw::Zlib::Inflate(
+                       {-Bufsize => 1,
                        -AppendOutput =>1,
                        -WindowBits => -MAX_WBITS()})) ;
     ok $k ;
     cmp_ok $err, '==', Z_OK ;
-     
+
     my $GOT = '';
     foreach (@Answer)
     {
         $status = $k->inflate($_, $GOT) ;
         last if $status == Z_STREAM_END or $status != Z_OK ;
-     
+
     }
-     
+
     cmp_ok $status, '==', Z_STREAM_END ;
     is $GOT, $hello ;
-    
+
 }
 
 SKIP:
 {
     title 'inflateSync';
 
-    skip "inflateSync needs zlib 1.2.1 or better, you have $Zlib_ver", 22 
+    skip "inflateSync needs zlib 1.2.1 or better, you have $Zlib_ver", 22
         if ZLIB_VERNUM() < 0x1210 ;
 
     # create a deflate stream with flush points
@@ -443,31 +443,31 @@ SKIP:
     my $goodbye = "Will I dream?" x 2010;
     my ($x, $err, $answer, $X, $Z, $status);
     my $Answer ;
-     
+
     #use Devel::Peek ;
     ok(($x, $err) = new Compress::Raw::Zlib::Deflate(AppendOutput => 1)) ;
     ok $x ;
     cmp_ok $err, '==', Z_OK ;
-     
+
     cmp_ok $x->deflate($hello, $Answer), '==', Z_OK;
-    
+
     # create a flush point
     cmp_ok $x->flush($Answer, Z_FULL_FLUSH), '==', Z_OK ;
-    
+
     my $len1 = length $Answer;
-     
+
     cmp_ok $x->deflate($goodbye, $Answer), '==', Z_OK;
-    
+
     cmp_ok $x->flush($Answer), '==', Z_OK ;
     my $len2 = length($Answer) - $len1 ;
-     
+
     my ($first, @Answer) = split('', $Answer) ;
-     
+
     my $k;
     ok(($k, $err) = new Compress::Raw::Zlib::Inflate()) ;
     ok $k ;
     cmp_ok $err, '==', Z_OK ;
-     
+
     cmp_ok  $k->inflate($first, $Z), '==', Z_OK;
 
     # skip to the first flush point.
@@ -479,7 +479,7 @@ SKIP:
     }
 
     cmp_ok $status, '==', Z_OK;
-     
+
     my $GOT = '';
     foreach (@Answer)
     {
@@ -489,7 +489,7 @@ SKIP:
         # print "x $status\n";
         last if $status == Z_STREAM_END or $status != Z_OK ;
     }
-     
+
     cmp_ok $status, '==', Z_DATA_ERROR ;
     is $GOT, $goodbye ;
 
@@ -499,21 +499,21 @@ SKIP:
     $rest =~ s/^(.)//;
     my $initial = $1 ;
 
-    
+
     ok(($k, $err) = new Compress::Raw::Zlib::Inflate(ConsumeInput => 0)) ;
     ok $k ;
     cmp_ok $err, '==', Z_OK ;
-     
+
     cmp_ok $k->inflate($initial, $Z), '==', Z_OK;
 
     # Skip to the flush point
     $status = $k->inflateSync($rest);
     cmp_ok $status, '==', Z_OK
      or diag "status '$status'\nlength rest is " . length($rest) . "\n" ;
-     
+
     is length($rest), $len2, "expected compressed output";
-    
-    $GOT = ''; 
+
+    $GOT = '';
     cmp_ok $k->inflate($rest, $GOT), '==', Z_DATA_ERROR, "inflate returns Z_DATA_ERROR";
     is $GOT, $goodbye ;
 }
@@ -524,7 +524,7 @@ SKIP:
     my $hello = "I am a HAL 9000 computer" x 2001 ;
     my $goodbye = "Will I dream?" x 2010;
     my ($x, $input, $err, $answer, $X, $status, $Answer);
-     
+
     ok(($x, $err) = new Compress::Raw::Zlib::Deflate(
                        -AppendOutput   => 1,
                        -Level    => Z_DEFAULT_COMPRESSION,
@@ -534,11 +534,11 @@ SKIP:
 
     ok $x->get_Level()    == Z_DEFAULT_COMPRESSION;
     ok $x->get_Strategy() == Z_DEFAULT_STRATEGY;
-     
+
     $status = $x->deflate($hello, $Answer) ;
     cmp_ok $status, '==', Z_OK ;
     $input .= $hello;
-    
+
     # error cases
     eval { $x->deflateParams() };
     like $@, mkErr('^Compress::Raw::Zlib::deflateParams needs Level and\/or Strategy');
@@ -551,54 +551,54 @@ SKIP:
 
     is $x->get_Level(),    Z_DEFAULT_COMPRESSION;
     is $x->get_Strategy(), Z_DEFAULT_STRATEGY;
-     
+
     # change both Level & Strategy
     $status = $x->deflateParams(-Level => Z_BEST_SPEED, -Strategy => Z_HUFFMAN_ONLY, -Bufsize => 1234) ;
     cmp_ok $status, '==', Z_OK ;
-    
+
     is $x->get_Level(),    Z_BEST_SPEED;
     is $x->get_Strategy(), Z_HUFFMAN_ONLY;
-     
-    # change both Level & Strategy again without any calls to deflate 
+
+    # change both Level & Strategy again without any calls to deflate
     $status = $x->deflateParams(-Level => Z_DEFAULT_COMPRESSION, -Strategy => Z_DEFAULT_STRATEGY, -Bufsize => 1234) ;
     cmp_ok $status, '==', Z_OK ;
-    
+
     is $x->get_Level(),    Z_DEFAULT_COMPRESSION;
     is $x->get_Strategy(), Z_DEFAULT_STRATEGY;
-     
+
     $status = $x->deflate($goodbye, $Answer) ;
     cmp_ok $status, '==', Z_OK ;
     $input .= $goodbye;
-    
-    # change only Level 
+
+    # change only Level
     $status = $x->deflateParams(-Level => Z_NO_COMPRESSION) ;
     cmp_ok $status, '==', Z_OK ;
-    
+
     is $x->get_Level(),    Z_NO_COMPRESSION;
     is $x->get_Strategy(), Z_DEFAULT_STRATEGY;
-     
+
     $status = $x->deflate($goodbye, $Answer) ;
     cmp_ok $status, '==', Z_OK ;
     $input .= $goodbye;
-    
+
     # change only Strategy
     $status = $x->deflateParams(-Strategy => Z_FILTERED) ;
     cmp_ok $status, '==', Z_OK ;
-    
+
     is $x->get_Level(),    Z_NO_COMPRESSION;
     is $x->get_Strategy(), Z_FILTERED;
-     
+
     $status = $x->deflate($goodbye, $Answer) ;
     cmp_ok $status, '==', Z_OK ;
     $input .= $goodbye;
-    
+
     cmp_ok $x->flush($Answer), '==', Z_OK ;
-     
+
     my $k;
     ok(($k, $err) = new Compress::Raw::Zlib::Inflate()) ;
     ok $k ;
     cmp_ok $err, '==', Z_OK ;
-     
+
     my $Z;
     $status = $k->inflate($Answer, $Z) ;
 
@@ -611,8 +611,8 @@ SKIP:
     title "ConsumeInput and a read-only buffer trapped" ;
 
     ok my $k = new Compress::Raw::Zlib::Inflate(-ConsumeInput => 1) ;
-     
-    my $Z; 
+
+    my $Z;
     eval { $k->inflate("abc", $Z) ; };
     like $@, mkErr("Compress::Raw::Zlib::Inflate::inflate input parameter cannot be read-only when ConsumeInput is specified");
 
@@ -628,22 +628,22 @@ foreach (1 .. 2)
     foreach (1 .. 5000)
       { $contents .= chr int rand 255 }
     ok  my $x = new Compress::Raw::Zlib::Deflate(-AppendOutput => 1) ;
-     
+
     my $X ;
     my $status = $x->deflate(substr($contents,0), $X);
     cmp_ok $status, '==', Z_OK ;
-    
+
     cmp_ok $x->flush($X), '==', Z_OK  ;
-     
+
     my $append = "Appended" ;
     $X .= $append ;
-     
+
     ok my $k = new Compress::Raw::Zlib::Inflate(-AppendOutput => 1) ;
-     
-    my $Z; 
+
+    my $Z;
     my $keep = $X ;
     $status = $k->inflate(substr($X, 0), $Z) ;
-     
+
     cmp_ok $status, '==', Z_STREAM_END ;
     #print "status $status X [$X]\n" ;
     is $contents, $Z ;
@@ -659,34 +659,34 @@ foreach (1 .. 2)
 
     my $hello = "I am a HAL 9000 computer" ;
     my @hello = split('', $hello) ;
-    my ($err, $x, $X, $status); 
+    my ($err, $x, $X, $status);
+
     ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( -Bufsize => 1 ) );
     ok $x ;
     cmp_ok $err, '==', Z_OK ;
+
     $X = "" ;
     my $Answer = '';
     foreach (@hello)
     {
         $status = $x->deflate($_, $X) ;
         last unless $status == Z_OK ;
-    
+
         $Answer .= $X ;
     }
-     
+
     cmp_ok $status, '==', Z_OK ;
-    
+
     cmp_ok  $x->flush($X), '==', Z_OK ;
     $Answer .= $X ;
-     
+
     my @Answer = split('', $Answer) ;
-     
+
     my $k;
     ok(($k, $err) = new Compress::Raw::Zlib::Inflate(-AppendOutput => 1) );
     ok $k ;
     cmp_ok $err, '==', Z_OK ;
+
     my $GOT ;
     my $Z;
     $Z = 1 ;#x 2000 ;
@@ -695,7 +695,7 @@ foreach (1 .. 2)
         $status = $k->inflate($_, $GOT) ;
         last if $status == Z_STREAM_END or $status != Z_OK ;
     }
-     
+
     cmp_ok $status, '==', Z_STREAM_END ;
     is $GOT, $hello ;
 
@@ -715,35 +715,134 @@ if ($] >= 5.005)
     cmp_ok $x->deflate($data, $X), '==',  Z_OK ;
 
     cmp_ok $x->flush($X), '==', Z_OK ;
-     
+
     my $append = "Appended" ;
     $X .= $append ;
     my $keep = $X ;
-     
+
     ok my $k = new Compress::Raw::Zlib::Inflate ( -AppendOutput => 1,
                                              -ConsumeInput => 1 ) ;
-     
+
     cmp_ok $k->inflate(substr($X, 0, -1), $Z), '==', Z_STREAM_END ; ;
-     
+
     ok $hello eq $Z ;
     is $X, $append;
-    
+
     $X = $keep ;
     $Z = '';
     ok $k = new Compress::Raw::Zlib::Inflate ( -AppendOutput => 1,
                                           -ConsumeInput => 0 ) ;
-     
+
     cmp_ok $k->inflate(substr($X, 0, -1), $Z), '==', Z_STREAM_END ; ;
     #cmp_ok $k->inflate(substr($X, 0), $Z), '==', Z_STREAM_END ; ;
-     
+
     ok $hello eq $Z ;
     is $X, $keep;
-    
+
+}
+
+{
+    title 'RT#132734: test inflate append OOK output parameter';
+    # https://github.com/pmqs/Compress-Raw-Zlib/issues/3
+
+    my $hello = "I am a HAL 9000 computer" ;
+    my $data = $hello ;
+
+    my($X, $Z);
+
+    ok my $x = new Compress::Raw::Zlib::Deflate ( -AppendOutput => 1 );
+
+    cmp_ok $x->deflate($data, $X), '==',  Z_OK ;
+
+    cmp_ok $x->flush($X), '==', Z_OK ;
+
+    ok my $k = new Compress::Raw::Zlib::Inflate ( -AppendOutput => 1,
+                                             -ConsumeInput => 1 ) ;
+    $Z = 'prev. ' ;
+    substr($Z, 0, 4, ''); # chop off first 4 characters using offset
+    cmp_ok $Z, 'eq', '. ' ;
+
+    # use Devel::Peek ; Dump($Z) ; # shows OOK flag
+
+    # if (1) { # workaround
+    #     my $prev = $Z;
+    #     undef $Z ;
+    #     $Z = $prev ;
+    # }
+
+    cmp_ok $k->inflate($X, $Z), '==', Z_STREAM_END ;
+    # use Devel::Peek ; Dump($Z) ; # No OOK flag
+
+    cmp_ok $Z, 'eq', ". $hello" ;
+}
+
+
+{
+    title 'RT#132734: test deflate append OOK output parameter';
+    # https://github.com/pmqs/Compress-Raw-Zlib/issues/3
+
+    my $hello = "I am a HAL 9000 computer" ;
+    my $data = $hello ;
+
+    my($X, $Z);
+
+    $X = 'prev. ' ;
+    substr($X, 0, 6, ''); # chop off all characters using offset
+    cmp_ok $X, 'eq', '' ;
+
+    # use Devel::Peek ; Dump($X) ; # shows OOK flag
+
+    # if (1) { # workaround
+    #     my $prev = $Z;
+    #     undef $Z ;
+    #     $Z = $prev ;
+    # }
+
+    ok my $x = new Compress::Raw::Zlib::Deflate ( -AppendOutput => 1 );
+
+    cmp_ok $x->deflate($data, $X), '==',  Z_OK ;
+
+    cmp_ok $x->flush($X), '==', Z_OK ;
+
+    ok my $k = new Compress::Raw::Zlib::Inflate ( -AppendOutput => 1,
+                                             -ConsumeInput => 1 ) ;
+    cmp_ok $k->inflate($X, $Z), '==', Z_STREAM_END ;
+
+    is $Z, $hello ;
+}
+
+
+{
+    title 'RT#132734: test flush append OOK output parameter';
+    # https://github.com/pmqs/Compress-Raw-Zlib/issues/3
+
+    my $hello = "I am a HAL 9000 computer" ;
+    my $data = $hello ;
+
+    my($X, $Z);
+
+    my $F = 'prev. ' ;
+    substr($F, 0, 6, ''); # chop off all characters using offset
+    cmp_ok $F, 'eq', '' ;
+
+    # use Devel::Peek ; Dump($F) ; # shows OOK flag
+
+    ok my $x = new Compress::Raw::Zlib::Deflate ( -AppendOutput => 1 );
+
+    cmp_ok $x->deflate($data, $X), '==',  Z_OK ;
+
+    cmp_ok $x->flush($F), '==', Z_OK ;
+
+    ok my $k = new Compress::Raw::Zlib::Inflate ( -AppendOutput => 1,
+                                             -ConsumeInput => 1 ) ;
+    cmp_ok $k->inflate($X . $F, $Z), '==', Z_STREAM_END ;
+
+    is $Z, $hello ;
 }
 
 SKIP:
 {
-    skip "InflateScan needs zlib 1.2.1 or better, you have $Zlib_ver", 1 
+    skip "InflateScan needs zlib 1.2.1 or better, you have $Zlib_ver", 1
         if ZLIB_VERNUM() < 0x1210 ;
 
     # regression - check that resetLastBlockByte can cope with a NULL
@@ -758,44 +857,44 @@ SKIP:
     title "gzip mode";
     # ================
 
-    skip "gzip mode needs zlib 1.2.1 or better, you have $Zlib_ver", 13 
+    skip "gzip mode needs zlib 1.2.1 or better, you have $Zlib_ver", 13
         if ZLIB_VERNUM() < 0x1210 ;
 
     my $hello = "I am a HAL 9000 computer" ;
     my @hello = split('', $hello) ;
-    my ($err, $x, $X, $status); 
-    ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( 
+    my ($err, $x, $X, $status);
+
+    ok( ($x, $err) = new Compress::Raw::Zlib::Deflate (
             WindowBits => WANT_GZIP ,
             AppendOutput => 1
         ), "Create deflate object" );
     ok $x, "Compress::Raw::Zlib::Deflate ok" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
+
     $status = $x->deflate($hello, $X) ;
     cmp_ok $status, '==', Z_OK, "deflate returned Z_OK" ;
-    
+
     cmp_ok  $x->flush($X), '==', Z_OK, "flush returned Z_OK" ;
-     
-    my ($k, $GOT); 
-    ($k, $err) = new Compress::Raw::Zlib::Inflate( 
+
+    my ($k, $GOT);
+    ($k, $err) = new Compress::Raw::Zlib::Inflate(
             WindowBits => WANT_GZIP ,
             ConsumeInput => 0 ,
             AppendOutput => 1);
     ok $k, "Compress::Raw::Zlib::Inflate WANT_GZIP ok" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
+
     $status = $k->inflate($X, $GOT) ;
     cmp_ok $status, '==', Z_STREAM_END, "Got Z_STREAM_END" ;
     is $GOT, $hello, "uncompressed data matches ok" ;
 
     $GOT = '';
-    ($k, $err) = new Compress::Raw::Zlib::Inflate( 
+    ($k, $err) = new Compress::Raw::Zlib::Inflate(
             WindowBits => WANT_GZIP_OR_ZLIB ,
             AppendOutput => 1);
     ok $k, "Compress::Raw::Zlib::Inflate WANT_GZIP_OR_ZLIB ok" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
+
     $status = $k->inflate($X, $GOT) ;
     cmp_ok $status, '==', Z_STREAM_END, "Got Z_STREAM_END" ;
     is $GOT, $hello, "uncompressed data matches ok" ;
@@ -810,42 +909,42 @@ SKIP:
     # then read with WANT_GZIP_OR_ZLIB - thi swill work
     # ================
 
-    skip "gzip mode needs zlib 1.2.1 or better, you have $Zlib_ver", 12 
+    skip "gzip mode needs zlib 1.2.1 or better, you have $Zlib_ver", 12
         if ZLIB_VERNUM() < 0x1210 ;
 
     my $hello = "I am a HAL 9000 computer" ;
-    my ($err, $x, $X, $status); 
-    ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( 
+    my ($err, $x, $X, $status);
+
+    ok( ($x, $err) = new Compress::Raw::Zlib::Deflate (
             WindowBits => WANT_GZIP ,
             AppendOutput => 1
         ), "Create deflate object" );
     ok $x, "Compress::Raw::Zlib::Deflate ok" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
+
     $status = $x->deflate($hello, $X) ;
     cmp_ok $status, '==', Z_OK, "deflate returned Z_OK" ;
-    
+
     cmp_ok  $x->flush($X), '==', Z_OK, "flush returned Z_OK" ;
-     
-    my ($k, $GOT); 
-    ($k, $err) = new Compress::Raw::Zlib::Inflate( 
+
+    my ($k, $GOT);
+    ($k, $err) = new Compress::Raw::Zlib::Inflate(
             WindowBits => MAX_WBITS ,
             ConsumeInput => 0 ,
             AppendOutput => 1);
     ok $k, "Compress::Raw::Zlib::Inflate WANT_GZIP ok" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
+
     $status = $k->inflate($X, $GOT) ;
     cmp_ok $status, '==', Z_DATA_ERROR, "Got Z_DATA_ERROR" ;
 
     $GOT = '';
-    ($k, $err) = new Compress::Raw::Zlib::Inflate( 
+    ($k, $err) = new Compress::Raw::Zlib::Inflate(
             WindowBits => WANT_GZIP_OR_ZLIB ,
             AppendOutput => 1);
     ok $k, "Compress::Raw::Zlib::Inflate WANT_GZIP_OR_ZLIB ok" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
+
     $status = $k->inflate($X, $GOT) ;
     cmp_ok $status, '==', Z_STREAM_END, "Got Z_STREAM_END" ;
     is $GOT, $hello, "uncompressed data matches ok" ;
@@ -859,41 +958,41 @@ SKIP:
     # then read with WANT_GZIP_OR_ZLIB - thi swill work
     # ================
 
-    skip "gzip mode needs zlib 1.2.1 or better, you have $Zlib_ver", 12 
+    skip "gzip mode needs zlib 1.2.1 or better, you have $Zlib_ver", 12
         if ZLIB_VERNUM() < 0x1210 ;
 
     my $hello = "I am a HAL 9000 computer" ;
-    my ($err, $x, $X, $status); 
-    ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( 
+    my ($err, $x, $X, $status);
+
+    ok( ($x, $err) = new Compress::Raw::Zlib::Deflate (
             AppendOutput => 1
         ), "Create deflate object" );
     ok $x, "Compress::Raw::Zlib::Deflate ok" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
+
     $status = $x->deflate($hello, $X) ;
     cmp_ok $status, '==', Z_OK, "deflate returned Z_OK" ;
-    
+
     cmp_ok  $x->flush($X), '==', Z_OK, "flush returned Z_OK" ;
-     
-    my ($k, $GOT); 
-    ($k, $err) = new Compress::Raw::Zlib::Inflate( 
+
+    my ($k, $GOT);
+    ($k, $err) = new Compress::Raw::Zlib::Inflate(
             WindowBits => WANT_GZIP ,
             ConsumeInput => 0 ,
             AppendOutput => 1);
     ok $k, "Compress::Raw::Zlib::Inflate WANT_GZIP ok" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
+
     $status = $k->inflate($X, $GOT) ;
     cmp_ok $status, '==', Z_DATA_ERROR, "Got Z_DATA_ERROR" ;
 
     $GOT = '';
-    ($k, $err) = new Compress::Raw::Zlib::Inflate( 
+    ($k, $err) = new Compress::Raw::Zlib::Inflate(
             WindowBits => WANT_GZIP_OR_ZLIB ,
             AppendOutput => 1);
     ok $k, "Compress::Raw::Zlib::Inflate WANT_GZIP_OR_ZLIB ok" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
+
     $status = $k->inflate($X, $GOT) ;
     cmp_ok $status, '==', Z_STREAM_END, "Got Z_STREAM_END" ;
     is $GOT, $hello, "uncompressed data matches ok" ;
@@ -918,17 +1017,17 @@ SKIP:
     title "repeated calls to flush after some compression";
 
     my $hello = "I am a HAL 9000 computer" ;
-    my ($err, $x, $X, $status); 
+    my ($err, $x, $X, $status);
+
     ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( ), "Create deflate object" );
     isa_ok $x, "Compress::Raw::Zlib::deflateStream" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
+
     $status = $x->deflate($hello, $X) ;
     cmp_ok $status, '==', Z_OK, "deflate returned Z_OK" ;
-    
-    cmp_ok  $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "flush returned Z_OK" ;    
-    cmp_ok  $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "second flush returned Z_OK" ; 
+
+    cmp_ok  $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "flush returned Z_OK" ;
+    cmp_ok  $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "second flush returned Z_OK" ;
     is $X, "", "no output from second flush";
 }
 
@@ -936,14 +1035,14 @@ SKIP:
     title "repeated calls to flush - no compression";
 
     my $hello = "I am a HAL 9000 computer" ;
-    my ($err, $x, $X, $status); 
+    my ($err, $x, $X, $status);
+
     ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( ), "Create deflate object" );
     isa_ok $x, "Compress::Raw::Zlib::deflateStream" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
-    
-    cmp_ok  $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "flush returned Z_OK" ;    
-    cmp_ok  $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "second flush returned Z_OK" ; 
+
+    cmp_ok  $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "flush returned Z_OK" ;
+    cmp_ok  $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "second flush returned Z_OK" ;
     is $X, "", "no output from second flush";
 }
 
@@ -963,14 +1062,14 @@ if (0)
     title "RT #122695: sync flush appending extra empty uncompressed block";
 
     my $hello = "I am a HAL 9000 computer" ;
-    my ($err, $x, $X, $status); 
+    my ($err, $x, $X, $status);
+
     ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( ), "Create deflate object" );
     isa_ok $x, "Compress::Raw::Zlib::deflateStream" ;
     cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
-    
-    cmp_ok  $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "flush returned Z_OK" ;    
-    cmp_ok  $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "second flush returned Z_OK" ; 
+
+    cmp_ok  $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "flush returned Z_OK" ;
+    cmp_ok  $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "second flush returned Z_OK" ;
     is $X, "", "no output from second flush";
 }
 
@@ -982,36 +1081,36 @@ foreach (1 .. 2)
 
     my $hello = "I am a HAL 9000 computer" ;
     my @hello = split('', $hello) ;
-    my ($err, $x, $X, $status); 
+    my ($err, $x, $X, $status);
+
     ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( -Bufsize => 1,
                                             -AppendOutput => 1 ) );
     ok $x ;
     cmp_ok $err, '==', Z_OK ;
+
     $X = "" ;
     my $Answer = '';
     foreach (@hello)
     {
         $status = $x->deflate($_, substr($Answer, length($Answer))) ;
         last unless $status == Z_OK ;
-    
+
     }
-     
+
     cmp_ok $status, '==', Z_OK ;
-    
+
     cmp_ok  $x->flush(substr($Answer, length($Answer))), '==', Z_OK ;
-     
+
     #cmp_ok length $Answer, ">", 0 ;
 
     my @Answer = split('', $Answer) ;
-    
-     
+
+
     my $k;
     ok(($k, $err) = new Compress::Raw::Zlib::Inflate(-AppendOutput => 1) );
     ok $k ;
     cmp_ok $err, '==', Z_OK ;
+
     my $GOT = '';
     my $Z;
     $Z = 1 ;#x 2000 ;
@@ -1020,7 +1119,7 @@ foreach (1 .. 2)
         $status = $k->inflate($_, substr($GOT, length($GOT))) ;
         last if $status == Z_STREAM_END or $status != Z_OK ;
     }
-     
+
     cmp_ok $status, '==', Z_STREAM_END ;
     is $GOT, $hello ;
 
@@ -1032,33 +1131,33 @@ foreach (1 .. 2)
 
     my $hello = "I am a HAL 9000 computer" ;
     my @hello = split('', $hello) ;
-    my ($err, $x, $X, $status); 
+    my ($err, $x, $X, $status);
+
     ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( -Bufsize => 1,
                                             -AppendOutput => 1 ) );
     ok $x ;
     cmp_ok $err, '==', Z_OK ;
+
     $X = "" ;
     my $Answer = '';
     foreach (@hello)
     {
         $status = $x->deflate($_, substr($Answer, 0)) ;
         last unless $status == Z_OK ;
-    
+
     }
-     
+
     cmp_ok $status, '==', Z_OK ;
-    
+
     cmp_ok  $x->flush(substr($Answer, 0)), '==', Z_OK ;
-     
+
     my @Answer = split('', $Answer) ;
-     
+
     my $k;
     ok(($k, $err) = new Compress::Raw::Zlib::Inflate(-AppendOutput => 1) );
     ok $k ;
     cmp_ok $err, '==', Z_OK ;
+
     my $GOT = '';
     my $Z;
     $Z = 1 ;#x 2000 ;
@@ -1067,8 +1166,7 @@ foreach (1 .. 2)
         $status = $k->inflate($_, substr($GOT, 0)) ;
         last if $status == Z_STREAM_END or $status != Z_OK ;
     }
-     
+
     cmp_ok $status, '==', Z_STREAM_END ;
     is $GOT, $hello ;
 }
-