From a260318815a268ae273669e3116274732e1f1945 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Fri, 3 Sep 1999 01:28:42 +0000 Subject: [PATCH] (Faset): Adjust the way to check byte-combining possibility for the new handling of multibyte sequence. --- src/data.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/data.c b/src/data.c index a7e16c93abb..c1cfb817d6a 100644 --- a/src/data.c +++ b/src/data.c @@ -1859,13 +1859,14 @@ IDX starts at 0.") error ("Attempt to change byte length of a string"); /* We can't accept a change causing byte combining. */ - if ((idxval > 0 && !CHAR_HEAD_P (*str) - && (prev_byte = string_char_to_byte (array, idxval - 1), - (prev_byte + 1 < idxval_byte - || (p[-1] >= 0x80 && p[-1] < 0xA0)))) - || (idxval < XSTRING (array)->size - 1 - && (*str >=0x80 && *str < 0xA0) - && !CHAR_HEAD_P (p[actual_len]))) + if (!ASCII_BYTE_P (*str) + && ((idxval > 0 && !CHAR_HEAD_P (*str) + && (prev_byte = string_char_to_byte (array, idxval - 1), + BYTES_BY_CHAR_HEAD (XSTRING (array)->data[prev_byte]) + > idxval_byte - prev_byte)) + || (idxval < XSTRING (array)->size - 1 + && !CHAR_HEAD_P (p[actual_len]) + && new_len < BYTES_BY_CHAR_HEAD (*str)))) error ("Attempt to change char length of a string"); while (new_len--) *p++ = *str++; -- 2.39.5