refactor(string_table): don't unnecessarily resize buffer

This commit is contained in:
Marcus Holland-Moritz 2024-10-20 13:21:48 +02:00
parent 91d292f464
commit e42f7dfc46

View File

@ -230,18 +230,18 @@ string_table::pack_generic(std::span<T const> input,
: total_input_size - symtab.size()); : total_input_size - symtab.size());
size_t num_compressed = 0; size_t num_compressed = 0;
do { for (;;) {
num_compressed = ::fsst_compress( num_compressed = ::fsst_compress(
enc.get(), size, len_vec.data(), ptr_vec.data(), buffer.size(), enc.get(), size, len_vec.data(), ptr_vec.data(), buffer.size(),
reinterpret_cast<unsigned char*>(buffer.data()), out_len_vec.data(), reinterpret_cast<unsigned char*>(buffer.data()), out_len_vec.data(),
out_ptr_vec.data()); out_ptr_vec.data());
if (num_compressed == size) { if (num_compressed == size || !options.force_pack_data) {
break; break;
} }
buffer.resize(2 * buffer.size()); buffer.resize(2 * buffer.size());
} while (options.force_pack_data); }
pack_data = num_compressed == size; pack_data = num_compressed == size;
} else { } else {