diff options
author | Eli Zaretskii <eliz@gnu.org> | 2019-01-28 22:03:05 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2019-01-28 22:03:05 +0200 |
commit | 9d8f900d93c196cd1048cdbad12e08da7a38a604 (patch) | |
tree | cc3b65d6b2dea7c95dad6e2ed01ebfd1585dceb4 | |
parent | 0c9bce3fc490d6f5e935883e9690871cce4f9150 (diff) | |
download | emacs-9d8f900d93c196cd1048cdbad12e08da7a38a604.tar.gz |
Fix last change in xfaces.c
* src/xfaces.c (init_xfaces): Don't rely of 'face'
property of a face to be a natural number.
-rw-r--r-- | src/xfaces.c | 33 |
1 files changed, 12 insertions, 21 deletions
diff --git a/src/xfaces.c b/src/xfaces.c index 7facb13b76c..3ba824b6517 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -6520,28 +6520,19 @@ init_xfaces (void) { if (CONSP (Vface_new_frame_defaults)) { - Lisp_Object lface = XCAR (Vface_new_frame_defaults); - if (CONSP (lface)) + /* Allocate the lface_id_to_name[] array. */ + lface_id_to_name_size = next_lface_id = + XFIXNAT (Flength (Vface_new_frame_defaults)); + lface_id_to_name = xnmalloc (next_lface_id, sizeof *lface_id_to_name); + + /* Store the faces. */ + Lisp_Object tail; + int i = next_lface_id - 1; + for (tail = Vface_new_frame_defaults; CONSP (tail); tail = XCDR (tail)) { - /* The first face in the list is the last face defined - during loadup. Compute how many faces are there, and - allocate the lface_id_to_name[] array. */ - Lisp_Object lface_id = Fget (XCAR (lface), Qface); - lface_id_to_name_size = next_lface_id = XFIXNAT (lface_id) + 1; - lface_id_to_name = xnmalloc (next_lface_id, sizeof *lface_id_to_name); - /* Store the last face. */ - lface_id_to_name[next_lface_id - 1] = lface; - - /* Store the rest of the faces. */ - Lisp_Object tail; - for (tail = XCDR (Vface_new_frame_defaults); CONSP (tail); - tail = XCDR (tail)) - { - lface = XCAR (tail); - int face_id = XFIXNAT (Fget (XCAR (lface), Qface)); - eassert (face_id < lface_id_to_name_size); - lface_id_to_name[face_id] = lface; - } + Lisp_Object lface = XCAR (tail); + eassert (i >= 0); + lface_id_to_name[i--] = XCAR (lface); } } } |