diff options
| author | Kenichi Handa | 2004-09-29 23:40:30 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2004-09-29 23:40:30 +0000 |
| commit | ce559e6f5bd5ebdd8f2ebeeb609fae06f6bac1f6 (patch) | |
| tree | 0614303192d983b7d3850dcdcb5d4f06f8278543 /src/coding.c | |
| parent | 14e20e1309c68b214db1b6d3c369a2c2bdaeb4e2 (diff) | |
| download | emacs-ce559e6f5bd5ebdd8f2ebeeb609fae06f6bac1f6.tar.gz emacs-ce559e6f5bd5ebdd8f2ebeeb609fae06f6bac1f6.zip | |
(code_convert_region): Don't skip ASCIIs if there are compositions to encode.
Free composition data.
(encode_coding_string): Likewise.
Diffstat (limited to 'src/coding.c')
| -rw-r--r-- | src/coding.c | 20 |
1 files 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) | |||
| 5650 | coding_allocate_composition_data (coding, from); | 5650 | coding_allocate_composition_data (coding, from); |
| 5651 | } | 5651 | } |
| 5652 | 5652 | ||
| 5653 | /* Try to skip the heading and tailing ASCIIs. */ | 5653 | /* Try to skip the heading and tailing ASCIIs. We can't skip them |
| 5654 | if (coding->type != coding_type_ccl) | 5654 | if we must run CCL program or there are compositions to |
| 5655 | encode. */ | ||
| 5656 | if (coding->type != coding_type_ccl | ||
| 5657 | && (! coding->cmp_data || coding->cmp_data->used == 0)) | ||
| 5655 | { | 5658 | { |
| 5656 | int from_byte_orig = from_byte, to_byte_orig = to_byte; | 5659 | int from_byte_orig = from_byte, to_byte_orig = to_byte; |
| 5657 | 5660 | ||
| @@ -5667,6 +5670,7 @@ code_convert_region (from, from_byte, to, to_byte, coding, encodep, replace) | |||
| 5667 | if (!replace) | 5670 | if (!replace) |
| 5668 | /* We must record and adjust for this new text now. */ | 5671 | /* We must record and adjust for this new text now. */ |
| 5669 | adjust_after_insert (from, from_byte_orig, to, to_byte_orig, len); | 5672 | adjust_after_insert (from, from_byte_orig, to, to_byte_orig, len); |
| 5673 | coding_free_composition_data (coding); | ||
| 5670 | return 0; | 5674 | return 0; |
| 5671 | } | 5675 | } |
| 5672 | 5676 | ||
| @@ -6297,13 +6301,19 @@ encode_coding_string (str, coding, nocopy) | |||
| 6297 | if (coding->composing != COMPOSITION_DISABLED) | 6301 | if (coding->composing != COMPOSITION_DISABLED) |
| 6298 | coding_save_composition (coding, from, to, str); | 6302 | coding_save_composition (coding, from, to, str); |
| 6299 | 6303 | ||
| 6300 | /* Try to skip the heading and tailing ASCIIs. */ | 6304 | /* Try to skip the heading and tailing ASCIIs. We can't skip them |
| 6301 | if (coding->type != coding_type_ccl) | 6305 | if we must run CCL program or there are compositions to |
| 6306 | encode. */ | ||
| 6307 | if (coding->type != coding_type_ccl | ||
| 6308 | && (! coding->cmp_data || coding->cmp_data->used == 0)) | ||
| 6302 | { | 6309 | { |
| 6303 | SHRINK_CONVERSION_REGION (&from, &to_byte, coding, SDATA (str), | 6310 | SHRINK_CONVERSION_REGION (&from, &to_byte, coding, SDATA (str), |
| 6304 | 1); | 6311 | 1); |
| 6305 | if (from == to_byte) | 6312 | if (from == to_byte) |
| 6306 | return (nocopy ? str : Fcopy_sequence (str)); | 6313 | { |
| 6314 | coding_free_composition_data (coding); | ||
| 6315 | return (nocopy ? str : Fcopy_sequence (str)); | ||
| 6316 | } | ||
| 6307 | shrinked_bytes = from + (SBYTES (str) - to_byte); | 6317 | shrinked_bytes = from + (SBYTES (str) - to_byte); |
| 6308 | } | 6318 | } |
| 6309 | 6319 | ||