summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2019-01-28 22:03:05 +0200
committerEli Zaretskii <eliz@gnu.org>2019-01-28 22:03:05 +0200
commit9d8f900d93c196cd1048cdbad12e08da7a38a604 (patch)
treecc3b65d6b2dea7c95dad6e2ed01ebfd1585dceb4
parent0c9bce3fc490d6f5e935883e9690871cce4f9150 (diff)
downloademacs-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.c33
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);
}
}
}