diff --git a/lib/icu_compress/cmp_icu.c b/lib/icu_compress/cmp_icu.c
index b610991ea329ae76a9ac6cd6630b360919747243..45554bf6771bd155a775da1933c38a1246b99ead 100644
--- a/lib/icu_compress/cmp_icu.c
+++ b/lib/icu_compress/cmp_icu.c
@@ -2265,7 +2265,7 @@ int icu_compress_data(const struct cmp_cfg *cfg)
 			return 0;
 		cfg_cpy = *cfg;
 		cfg_cpy.buffer_length = cmp_cal_size_of_data(cfg->buffer_length, cfg->data_type);
-		if (!cfg_cpy.buffer_length)
+		if (cfg_cpy.icu_output_buf && !cfg_cpy.buffer_length)
 			return -1;
 
 		if (!rdcu_supported_data_type_is_used(cfg->data_type) && !cmp_data_type_is_invalid(cfg->data_type)) {