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