aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2005-10-14 07:51:51 +0000
committerKenichi Handa2005-10-14 07:51:51 +0000
commitcac3d6206bd12b1c9c81a0f5411bcaf66eeb49dd (patch)
treec1cf072384dac8f220552845b144dcb830caf3e9 /src
parent6507c4c73dad972eb4f6bc224c8c22de6cbeec97 (diff)
downloademacs-cac3d6206bd12b1c9c81a0f5411bcaf66eeb49dd.tar.gz
emacs-cac3d6206bd12b1c9c81a0f5411bcaf66eeb49dd.zip
(casify_object): Fix for the case that case
conversion change the byte length.
Diffstat (limited to 'src')
-rw-r--r--src/casefiddle.c8
1 files 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)
92 else if (!UPPERCASEP (c) 92 else if (!UPPERCASEP (c)
93 && (!inword || flag != CASE_CAPITALIZE_UP)) 93 && (!inword || flag != CASE_CAPITALIZE_UP))
94 c = UPCASE1 (c); 94 c = UPCASE1 (c);
95 if (ASCII_BYTE_P (c) || (! multibyte && SINGLE_BYTE_CHAR_P (c))) 95 if ((ASCII_BYTE_P (c) && from_len == 1)
96 || (! multibyte && SINGLE_BYTE_CHAR_P (c)))
96 SSET (obj, i, c); 97 SSET (obj, i, c);
97 else 98 else
98 { 99 {
@@ -100,7 +101,10 @@ casify_object (flag, obj)
100 if (from_len == to_len) 101 if (from_len == to_len)
101 CHAR_STRING (c, SDATA (obj) + i); 102 CHAR_STRING (c, SDATA (obj) + i);
102 else 103 else
103 Faset (obj, make_number (n), make_number (c)); 104 {
105 Faset (obj, make_number (n), make_number (c));
106 len += to_len - from_len;
107 }
104 } 108 }
105 if ((int) flag >= (int) CASE_CAPITALIZE) 109 if ((int) flag >= (int) CASE_CAPITALIZE)
106 inword = SYNTAX (c) == Sword; 110 inword = SYNTAX (c) == Sword;