diff options
| author | Kenichi Handa | 2005-10-14 07:51:51 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2005-10-14 07:51:51 +0000 |
| commit | cac3d6206bd12b1c9c81a0f5411bcaf66eeb49dd (patch) | |
| tree | c1cf072384dac8f220552845b144dcb830caf3e9 /src/casefiddle.c | |
| parent | 6507c4c73dad972eb4f6bc224c8c22de6cbeec97 (diff) | |
| download | emacs-cac3d6206bd12b1c9c81a0f5411bcaf66eeb49dd.tar.gz emacs-cac3d6206bd12b1c9c81a0f5411bcaf66eeb49dd.zip | |
(casify_object): Fix for the case that case
conversion change the byte length.
Diffstat (limited to 'src/casefiddle.c')
| -rw-r--r-- | src/casefiddle.c | 8 |
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; |