aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKarl Heuer1998-06-18 04:11:28 +0000
committerKarl Heuer1998-06-18 04:11:28 +0000
commite3a10b5e595a84821b3440c484c840b541ba669f (patch)
tree994bd725391ed5f74ea2473aae611913c9002798 /src
parent9d3355d17865eb292084d09f6ddf487affa32dd9 (diff)
downloademacs-e3a10b5e595a84821b3440c484c840b541ba669f.tar.gz
emacs-e3a10b5e595a84821b3440c484c840b541ba669f.zip
(casify_object): Cope with modifier bits in character.
Diffstat (limited to 'src')
-rw-r--r--src/casefiddle.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/casefiddle.c b/src/casefiddle.c
index b6d8b21f606..65fc4f0d80a 100644
--- a/src/casefiddle.c
+++ b/src/casefiddle.c
@@ -47,13 +47,17 @@ casify_object (flag, obj)
47 { 47 {
48 if (INTEGERP (obj)) 48 if (INTEGERP (obj))
49 { 49 {
50 c = DOWNCASE (XFASTINT (obj)); 50 int flagbits = (CHAR_ALT | CHAR_SUPER | CHAR_HYPER
51 | CHAR_SHIFT | CHAR_CTL | CHAR_META);
52 int flags = XINT (obj) & flagbits;
53
54 c = DOWNCASE (XFASTINT (obj) & ~flagbits);
51 if (inword) 55 if (inword)
52 XSETFASTINT (obj, c); 56 XSETFASTINT (obj, c | flags);
53 else if (c == XFASTINT (obj)) 57 else if (c == (XFASTINT (obj) & ~flagbits))
54 { 58 {
55 c = UPCASE1 (XFASTINT (obj)); 59 c = UPCASE1 ((XFASTINT (obj) & ~flagbits));
56 XSETFASTINT (obj, c); 60 XSETFASTINT (obj, c | flags);
57 } 61 }
58 return obj; 62 return obj;
59 } 63 }