diff --git a/src/falco.cpp b/src/falco.cpp index a94d478..87424fb 100644 --- a/src/falco.cpp +++ b/src/falco.cpp @@ -536,7 +536,8 @@ main(int argc, char *argv[]) { // restrict buffer size to avoid using a possibly harmful amount of memory const auto get_sz = [](const auto &i) { return i.size; }; const auto max_sz = std::ranges::max(std::views::transform(infos, get_sz)); - buffer_size = buffer_size < max_sz ? buffer_size : min_buf_size; + buffer_size = + buffer_size < max_sz ? buffer_size : std::max(max_sz, min_buf_size); const auto min_buffer_size = get_min_buffer_size(max_read_length); if (std::cmp_greater(min_buffer_size, buffer_size)) { diff --git a/src/fastq_bgzf_file.cpp b/src/fastq_bgzf_file.cpp index 91d30a7..719e928 100644 --- a/src/fastq_bgzf_file.cpp +++ b/src/fastq_bgzf_file.cpp @@ -144,8 +144,8 @@ fastq_bgzf_file::get_chunks(std::int64_t n_chunks, const auto n_bytes_available = output_last; n_chunks = std::min((n_bytes_available + min_chunk_size - 1) / min_chunk_size, n_chunks); - const auto [chunk_size, remainder] = std::div(n_bytes_available, n_chunks); - assert(n_chunks > 0); + const auto [chunk_size, remainder] = std::div( + n_bytes_available, std::max(static_cast(1), n_chunks)); std::int64_t start_pos{}; std::int64_t chunk_end{}; for (const auto chunk_idx : std::views::iota(0, n_chunks)) {