aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim F. Storm2005-04-19 08:34:50 +0000
committerKim F. Storm2005-04-19 08:34:50 +0000
commitf374520488d14e4403a9df52bc751de5e4ab8005 (patch)
treed584ee18b15450ec128f2cd3d9629b77a1740e49
parent7dfe2054bcfec54203ce07dfa570a6e307608d32 (diff)
downloademacs-f374520488d14e4403a9df52bc751de5e4ab8005.tar.gz
emacs-f374520488d14e4403a9df52bc751de5e4ab8005.zip
(resolve_face_name): Use Fsafe_get to avoid redisplay
loops in case of bad face property lists. Limit number of face alias lookups to 10 (in case of face alias loops).
-rw-r--r--src/xfaces.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/xfaces.c b/src/xfaces.c
index 3ff8917ff91..d8ae7c2af19 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -3211,17 +3211,19 @@ resolve_face_name (face_name)
3211 Lisp_Object face_name; 3211 Lisp_Object face_name;
3212{ 3212{
3213 Lisp_Object aliased; 3213 Lisp_Object aliased;
3214 int alias_loop_max = 10;
3214 3215
3215 if (STRINGP (face_name)) 3216 if (STRINGP (face_name))
3216 face_name = intern (SDATA (face_name)); 3217 face_name = intern (SDATA (face_name));
3217 3218
3218 while (SYMBOLP (face_name)) 3219 while (SYMBOLP (face_name))
3219 { 3220 {
3220 aliased = Fget (face_name, Qface_alias); 3221 aliased = Fsafe_get (face_name, Qface_alias);
3221 if (NILP (aliased)) 3222 if (NILP (aliased))
3222 break; 3223 break;
3223 else 3224 if (--alias_loop_max == 0)
3224 face_name = aliased; 3225 break;
3226 face_name = aliased;
3225 } 3227 }
3226 3228
3227 return face_name; 3229 return face_name;