From 33fd86bd4d92442fb8f21e95408dd07b31f6ac51 Mon Sep 17 00:00:00 2001 From: Dominik Loidolt <dominik.loidolt@univie.ac.at> Date: Wed, 28 Feb 2024 10:28:18 +0100 Subject: [PATCH] Fix model update if dst==NULL and in model mode worst case --- lib/icu_compress/cmp_icu.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/icu_compress/cmp_icu.c b/lib/icu_compress/cmp_icu.c index ba3f8f4..593740d 100644 --- a/lib/icu_compress/cmp_icu.c +++ b/lib/icu_compress/cmp_icu.c @@ -2341,11 +2341,12 @@ static int32_t cmp_collection(uint8_t *col, uint8_t *model, uint8_t *updated_mod if ((uint32_t)dst_size + COLLECTION_HDR_SIZE > dst_capacity) return CMP_ERROR_SMALL_BUF; memcpy((uint8_t *)dst + dst_size, col, COLLECTION_HDR_SIZE); - if (model_mode_is_used(cfg->cmp_mode) && cfg->icu_new_model_buf) - memcpy(cfg->icu_new_model_buf, col, COLLECTION_HDR_SIZE); } dst_size += COLLECTION_HDR_SIZE; + if (model_mode_is_used(cfg->cmp_mode) && updated_model) + memcpy(updated_model, col, COLLECTION_HDR_SIZE); + /* prepare the different buffers */ cfg->icu_output_buf = dst; cfg->input_buf = col + COLLECTION_HDR_SIZE; @@ -2384,6 +2385,8 @@ static int32_t cmp_collection(uint8_t *col, uint8_t *model, uint8_t *updated_mod cfg->cmp_mode = CMP_MODE_RAW; dst_size_bits = compress_data_internal(cfg, dst_size<<3); cfg->cmp_mode = cmp_mode_cpy; + if (model_mode_is_used(cfg->cmp_mode) && cfg->icu_new_model_buf) + memcpy(cfg->icu_new_model_buf, cfg->input_buf, col_data_length); } } if (dst_size_bits < 0) -- GitLab