Mercurial > emacs
comparison src/xfaces.c @ 61647:a39c60b30e5a
(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).
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Tue, 19 Apr 2005 08:34:50 +0000 |
parents | c897778cd685 |
children | f012c6fd08c4 bbf359ec4a59 e1fbb019c538 |
comparison
equal
deleted
inserted
replaced
61646:9af68ed35480 | 61647:a39c60b30e5a |
---|---|
3209 static Lisp_Object | 3209 static Lisp_Object |
3210 resolve_face_name (face_name) | 3210 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; |
3228 } | 3230 } |
3229 | 3231 |