From ce559e6f5bd5ebdd8f2ebeeb609fae06f6bac1f6 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Wed, 29 Sep 2004 23:40:30 +0000 Subject: [PATCH] (code_convert_region): Don't skip ASCIIs if there are compositions to encode. Free composition data. (encode_coding_string): Likewise. --- src/coding.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/coding.c b/src/coding.c index 7f87abce34d..0c99054d47b 100644 --- a/src/coding.c +++ b/src/coding.c @@ -5650,8 +5650,11 @@ code_convert_region (from, from_byte, to, to_byte, coding, encodep, replace) coding_allocate_composition_data (coding, from); } - /* Try to skip the heading and tailing ASCIIs. */ - if (coding->type != coding_type_ccl) + /* Try to skip the heading and tailing ASCIIs. We can't skip them + if we must run CCL program or there are compositions to + encode. */ + if (coding->type != coding_type_ccl + && (! coding->cmp_data || coding->cmp_data->used == 0)) { int from_byte_orig = from_byte, to_byte_orig = to_byte; @@ -5667,6 +5670,7 @@ code_convert_region (from, from_byte, to, to_byte, coding, encodep, replace) if (!replace) /* We must record and adjust for this new text now. */ adjust_after_insert (from, from_byte_orig, to, to_byte_orig, len); + coding_free_composition_data (coding); return 0; } @@ -6297,13 +6301,19 @@ encode_coding_string (str, coding, nocopy) if (coding->composing != COMPOSITION_DISABLED) coding_save_composition (coding, from, to, str); - /* Try to skip the heading and tailing ASCIIs. */ - if (coding->type != coding_type_ccl) + /* Try to skip the heading and tailing ASCIIs. We can't skip them + if we must run CCL program or there are compositions to + encode. */ + if (coding->type != coding_type_ccl + && (! coding->cmp_data || coding->cmp_data->used == 0)) { SHRINK_CONVERSION_REGION (&from, &to_byte, coding, SDATA (str), 1); if (from == to_byte) - return (nocopy ? str : Fcopy_sequence (str)); + { + coding_free_composition_data (coding); + return (nocopy ? str : Fcopy_sequence (str)); + } shrinked_bytes = from + (SBYTES (str) - to_byte); } -- 2.39.2