Subject: Re: [PATCH 02/11] Use new compress helpers in git files

From: Junio C Hamano <[email-masked]>
Date: Sun, 03 Feb 2008 14:54:17 -0800

Marco Costalba <[email-masked]> writes:

> These are the 'easy' ones, where a signgle step
> compression is requested so that we can use only
> one call to compress_all()
>
> Signed-off-by: Marco Costalba <[email-masked]>
> ---
>  archive-zip.c          |   28 +++-------------------------
>  builtin-pack-objects.c |   19 +++----------------
>  diff.c                 |   22 +++++-----------------
>  index-pack.c           |   20 +++-----------------
>  4 files changed, 14 insertions(+), 75 deletions(-)
>
> diff --git a/archive-zip.c b/archive-zip.c
> index 74e30f6..9071b86 100644
> --- a/archive-zip.c
> +++ b/archive-zip.c
> @@ -3,6 +3,7 @@
>   */
>  #include "cache.h"
>  #include "commit.h"
> +#include "compress.h"
>  #include "blob.h"
>  #include "tree.h"
>  #include "quote.h"
> @@ -97,33 +98,10 @@ static void copy_le32(unsigned char *dest, unsigned int n)
>  static void *zlib_deflate(void *data, unsigned long size,
>                            unsigned long *compressed_size)
>  {
> ...
> -	if (result != Z_STREAM_END) {
> -		free(buffer);
> -		return NULL;
> -	}
>  
> -	deflateEnd(&stream);
> -	*compressed_size = stream.total_out;
> +	unsigned char *buffer = NULL;
>  
> +	*compressed_size = compress_all(zlib_compression_level, data, size, &buffer);
>  	return buffer;
>  }

This used to leave *compressed_size untouched upon deflate
failure but now it sets it to zero.  Is this change in behaviour
safe?