From 2584f745e0509472e68449bd81c60c26056d514a Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 2 Jun 2025 21:51:00 -0400 Subject: [PATCH] compress: prevent divide-by-zero when no data is read (#37706) If the first call to `loop_read()` returns 0 (no input), `total_in` remains 0, causing `total_out/total_in` to potential divide by zero. We add a check before logging the compression ratio to skip the percentage calculation when total_in is zero. Co-authored-by: jinyaoguo --- src/basic/compress.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/basic/compress.c b/src/basic/compress.c index 3270a7ed104..e9abe6fead7 100644 --- a/src/basic/compress.c +++ b/src/basic/compress.c @@ -921,9 +921,12 @@ int compress_stream_lz4(int fdf, int fdt, uint64_t max_bytes, uint64_t *ret_unco if (ret_uncompressed_size) *ret_uncompressed_size = total_in; - log_debug("LZ4 compression finished (%" PRIu64 " -> %" PRIu64 " bytes, %.1f%%)", - total_in, total_out, - (double) total_out / total_in * 100); + if (total_in == 0) + log_debug("LZ4 compression finished (no input data)"); + else + log_debug("LZ4 compression finished (%" PRIu64 " -> %" PRIu64 " bytes, %.1f%%)", + total_in, total_out, + (double) total_out / total_in * 100); return 0; #else -- 2.47.3