Pierre Neidhardt wrote:
3. In both functions, should we *compress_write everything first, then
*compress_read as much as we can?  Or chain write-read calls like in
bbexample.c?

If you want it simple, you may even alternate write/read calls in a loop without checking LZ_(de)compress_write_size. See this patch to bbexample.c:

--- bbexample.c~        2019-01-02 12:51:19.000000000 +0100
+++ bbexample.c         2019-04-23 18:52:01.000000000 +0200
@@ -128,8 +128,6 @@
   while( true )
     {
     int rd;
-    if( LZ_compress_write_size( encoder ) > 0 )
-      {
       if( written < size )
         {
         const int wr = LZ_compress_write( encoder, data + written,
@@ -138,7 +136,6 @@
         written += wr;
         }
       if( written >= size ) LZ_compress_finish( encoder );
-      }
     rd = LZ_compress_read( encoder, new_data + new_pos,
                            new_data_size - new_pos );
     if( rd < 0 ) { error = true; break; }
@@ -187,8 +184,6 @@
   while( true )
     {
     int rd;
-    if( LZ_decompress_write_size( decoder ) > 0 )
-      {
       if( written < size )
         {
         const int wr = LZ_decompress_write( decoder, data + written,
@@ -197,7 +192,6 @@
         written += wr;
         }
       if( written >= size ) LZ_decompress_finish( decoder );
-      }
     rd = LZ_decompress_read( decoder, new_data + new_pos,
                              new_data_size - new_pos );
     if( rd < 0 ) { error = true; break; }

_______________________________________________
Lzip-bug mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lzip-bug

Reply via email to