Mercurial > emacs
diff src/xfaces.c @ 97502:dc43c2f1d2fc
(lookup_derived_face): Properly handle possible zero
return value of get_lface_attributes.
(merge_faces): Don't tell lookup_derived_face to signal an error
if face is not found.
| author | Chong Yidong <cyd@stupidchicken.com> |
|---|---|
| date | Fri, 15 Aug 2008 21:32:48 +0000 |
| parents | f0079131098b |
| children | 9806866dbf50 |
line wrap: on
line diff
--- a/src/xfaces.c Fri Aug 15 21:32:01 2008 +0000 +++ b/src/xfaces.c Fri Aug 15 21:32:48 2008 +0000 @@ -4974,7 +4974,9 @@ if (!default_face) abort (); - get_lface_attributes (f, symbol, symbol_attrs, signal_p, 0); + if (!get_lface_attributes (f, symbol, symbol_attrs, signal_p, 0)) + return -1; + bcopy (default_face->lface, attrs, sizeof attrs); merge_face_vectors (f, symbol_attrs, attrs, 0); return lookup_face (f, attrs); @@ -6533,10 +6535,10 @@ if (face_id < 0 || face_id >= lface_id_to_name_size) return base_face_id; face_name = lface_id_to_name[face_id]; - face_id = lookup_derived_face (f, face_name, base_face_id, 1); - if (face_id >= 0) - return face_id; - return base_face_id; + /* When called during make-frame, lookup_derived_face may fail + if the faces are uninitialized. Don't signal an error. */ + face_id = lookup_derived_face (f, face_name, base_face_id, 0); + return (face_id >= 0 ? face_id : base_face_id); } /* Begin with attributes from the base face. */
