A compress patch
Werner Koch
wk at isil.d.shuttle.de
Wed Dec 9 18:50:57 CET 1998
For the curious one, this patch (against 0.4.5) fixes the compress
bug:
--- ../archive/gnupg-0.4.5/g10/compress.c Tue Aug 11 13:14:28 1998
+++ g10/compress.c Wed Dec 9 11:45:41 1998
@@ -76,8 +76,8 @@
zs->next_out = zfx->outbuf;
zs->avail_out = zfx->outbufsize;
if( DBG_FILTER )
- log_debug("call deflate: avail_in=%u, avail_out=%u\n",
- (unsigned)zs->avail_in, (unsigned)zs->avail_out);
+ log_debug("enter deflate: avail_in=%u, avail_out=%u, flush=%d\n",
+ (unsigned)zs->avail_in, (unsigned)zs->avail_out, flush );
zrc = deflate( zs, flush );
if( zrc == Z_STREAM_END && flush == Z_FINISH )
;
@@ -89,8 +89,10 @@
}
n = zfx->outbufsize - zs->avail_out;
if( DBG_FILTER )
- log_debug("deflate returned: avail_in=%u, avail_out=%u, n=%u\n",
- (unsigned)zs->avail_in, (unsigned)zs->avail_out, (unsigned)n );
+ log_debug("leave deflate: "
+ "avail_in=%u, avail_out=%u, n=%u, zrc=%d\n",
+ (unsigned)zs->avail_in, (unsigned)zs->avail_out,
+ (unsigned)n, zrc );
if( iobuf_write( a, zfx->outbuf, n ) ) {
log_debug("deflate: iobuf_write failed\n");
@@ -132,12 +134,14 @@
size_t n;
byte *p;
int c;
+ int refill = !zs->avail_in;
if( DBG_FILTER )
- log_debug("do_uncompress: avail_in=%u, avail_out=%u\n",
- (unsigned)zs->avail_in, (unsigned)zs->avail_out);
+ log_debug("begin inflate: avail_in=%u, avail_out=%u, inbuf=%u\n",
+ (unsigned)zs->avail_in, (unsigned)zs->avail_out,
+ (unsigned)zfx->inbufsize );
do {
- if( zs->avail_in < zfx->inbufsize ) {
+ if( zs->avail_in < zfx->inbufsize && refill ) {
n = zs->avail_in;
if( !n )
zs->next_in = zfx->inbuf;
@@ -148,8 +152,9 @@
}
zs->avail_in = n;
}
+ refill = 1;
if( DBG_FILTER )
- log_debug("call inflate: avail_in=%u, avail_out=%u\n",
+ log_debug("enter inflate: avail_in=%u, avail_out=%u\n",
(unsigned)zs->avail_in, (unsigned)zs->avail_out);
#ifdef Z_SYNC_FLUSH
zrc = inflate( zs, Z_SYNC_FLUSH );
@@ -157,7 +162,7 @@
zrc = inflate( zs, Z_PARTIAL_FLUSH );
#endif
if( DBG_FILTER )
- log_debug("inflate returned: avail_in=%u, avail_out=%u, zrc=%d\n",
+ log_debug("leave inflate: avail_in=%u, avail_out=%u, zrc=%d\n",
(unsigned)zs->avail_in, (unsigned)zs->avail_out, zrc);
if( zrc == Z_STREAM_END )
rc = -1; /* eof */
More information about the Gnupg-devel
mailing list