diff options
author | Kenichi Handa <handa@m17n.org> | 1998-09-07 13:39:15 +0000 |
---|---|---|
committer | Kenichi Handa <handa@m17n.org> | 1998-09-07 13:39:15 +0000 |
commit | b57a7b0bf4da9bd1e48939778e597b772803b5a1 (patch) | |
tree | c81a755cf465d29eebd1d7edc949aa27502eb336 /src/insdel.c | |
parent | 8783b77f5b102e14378a759d556cae4cdf3efc2b (diff) | |
download | emacs-b57a7b0bf4da9bd1e48939778e597b772803b5a1.tar.gz |
(count_combining_after): Check also preceding bytes at
POS if all characters in STRING are not character head.
Diffstat (limited to 'src/insdel.c')
-rw-r--r-- | src/insdel.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/insdel.c b/src/insdel.c index fb29518fe89..9a3aebfbc0a 100644 --- a/src/insdel.c +++ b/src/insdel.c @@ -950,11 +950,23 @@ count_combining_after (string, length, pos, pos_byte) if (length == 0 || ASCII_BYTE_P (string[length - 1])) return 0; i = length - 1; - while (i > 0 && ! CHAR_HEAD_P (string[i])) + while (i >= 0 && ! CHAR_HEAD_P (string[i])) { i--; } - if (! BASE_LEADING_CODE_P (string[i])) + if (i < 0) + { + /* All characters in `string' are not character head. + We must check also preceding bytes at POS. + We are sure that the gap is at POS. */ + string = BEG_ADDR; + i = pos_byte - 2; + while (i >= 0 && ! CHAR_HEAD_P (string[i])) + i--; + if (i < 0 || !BASE_LEADING_CODE_P (string[i])) + return 0; + } + else if (!BASE_LEADING_CODE_P (string[i])) return 0; if (pos == ZV) |