From cac3d6206bd12b1c9c81a0f5411bcaf66eeb49dd Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Fri, 14 Oct 2005 07:51:51 +0000 Subject: [PATCH] (casify_object): Fix for the case that case conversion change the byte length. --- src/casefiddle.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/casefiddle.c b/src/casefiddle.c index 454d184b99b..dee68fcf8c0 100644 --- a/src/casefiddle.c +++ b/src/casefiddle.c @@ -92,7 +92,8 @@ casify_object (flag, obj) else if (!UPPERCASEP (c) && (!inword || flag != CASE_CAPITALIZE_UP)) c = UPCASE1 (c); - if (ASCII_BYTE_P (c) || (! multibyte && SINGLE_BYTE_CHAR_P (c))) + if ((ASCII_BYTE_P (c) && from_len == 1) + || (! multibyte && SINGLE_BYTE_CHAR_P (c))) SSET (obj, i, c); else { @@ -100,7 +101,10 @@ casify_object (flag, obj) if (from_len == to_len) CHAR_STRING (c, SDATA (obj) + i); else - Faset (obj, make_number (n), make_number (c)); + { + Faset (obj, make_number (n), make_number (c)); + len += to_len - from_len; + } } if ((int) flag >= (int) CASE_CAPITALIZE) inword = SYNTAX (c) == Sword; -- 2.11.4.GIT