# HG changeset patch # User Kenichi Handa # Date 1129276311 0 # Node ID 68d711d80f2f43ea7040f86006f9cd9a15f33d05 # Parent 33c8db02dc18f54d49173a193e3d4df4108adfeb (casify_object): Fix for the case that case conversion change the byte length. diff -r 33c8db02dc18 -r 68d711d80f2f src/casefiddle.c --- a/src/casefiddle.c Thu Oct 13 22:42:01 2005 +0000 +++ b/src/casefiddle.c Fri Oct 14 07:51:51 2005 +0000 @@ -92,7 +92,8 @@ 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 @@ 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;