diff --git a/src/zrle.c b/src/zrle.c index 9fd2be8..7faff31 100644 --- a/src/zrle.c +++ b/src/zrle.c @@ -178,8 +178,6 @@ void zrle_encode_tile(struct vec* dst, const struct rfb_pixel_format* dst_fmt, int zrle_deflate(struct vec* dst, const struct vec* src, z_stream* zs, bool flush) { - int r = Z_STREAM_ERROR; - zs->next_in = src->data; zs->avail_in = src->len; @@ -190,8 +188,9 @@ int zrle_deflate(struct vec* dst, const struct vec* src, z_stream* zs, bool flus zs->next_out = ((Bytef*)dst->data) + dst->len; zs->avail_out = dst->cap - dst->len; - r = deflate(zs, flush ? Z_SYNC_FLUSH : Z_NO_FLUSH); - assert(r != Z_STREAM_ERROR); + int r = deflate(zs, flush ? Z_SYNC_FLUSH : Z_NO_FLUSH); + if (r == Z_STREAM_ERROR) + return -1; dst->len = zs->next_out - (Bytef*)dst->data; } while (zs->avail_out == 0);