Also let the caller to xmalloc() the buffer int compress_start() Signed-off-by: Marco Costalba <mcostalba@xxxxxxxxx> --- compress.c | 19 +++++++++---------- 1 files changed, 9 insertions(+), 10 deletions(-) diff --git a/compress.c b/compress.c index f6986c3..0d0b9d9 100644 --- a/compress.c +++ b/compress.c @@ -12,7 +12,7 @@ int compress_start(z_stream *stream, unsigned char *in, unsigned long in_size, unsigned char *out, unsigned long out_size) { - stream->next_out = (out ? out : xmalloc(out_size)); + stream->next_out = out; stream->avail_out = out_size; stream->next_in = in; stream->avail_in = in_size; @@ -36,19 +36,18 @@ unsigned long compress_free(z_stream *stream) return stream->total_out; } -unsigned long compress_all(int level, unsigned char *data, - unsigned long size, unsigned char **out) +unsigned long compress_all(int level, unsigned char *in, + unsigned long in_size, unsigned char **out) { - int bound, result; + unsigned long out_size; z_stream stream; - bound = compress_alloc(&stream, level, size); - compress_start(&stream, data, size, NULL, bound); + out_size = compress_alloc(&stream, level, in_size); + *out = xmalloc(out_size); - *out = stream.next_out; - result = compress_next(&stream, Z_FINISH); - - if (result != Z_STREAM_END) { + if ( compress_start(&stream, in, in_size, *out, out_size) != Z_OK + || compress_next(&stream, Z_FINISH) != Z_STREAM_END) + { compress_free(&stream); free(*out); *out = NULL; -- 1.5.4.rc4.39.g524a - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html